Bash

有沒有一種方便的方法可以將 bash 命令列表包裝到 rlwrap 中?

  • January 25, 2012

感謝superuser.com 上的一個問題,我發現了這個非常方便的rlwrap工具。

它滿足了我的需求(即,將命令歷史添加到另一個命令行工具),但我想知道如何使用它將命令歷史添加到“複合”shell 命令,就像原型一樣

$> while read line; do echo "i read $line"; done
hi
i read hi
^D

當我將while循環放在 shell 腳本中並像 一樣執行它時rlwrap ./whilereadline.sh,就可以了。

但我想知道如何在不需要額外文件的情況下做到這一點*,*有點像

$> rlwrap (while read line; do echo "line: $line"; done)
bash: syntax error near unexpected token `while'

有任何想法嗎?

你有沒有嘗試過

rlwrap sh -c 'while read line; do echo "i read $line"; done'

rlwrap需要一個可以執行的命令,而()語法誘導的 subshel​​l 則不需要。 sh -c ...然而,是一個命令。替換shbash您喜歡的任何外殼。

rlwrap需要一個程序來執行,它不能解釋命令本身。您可以將所需的 shell 程式碼包裝在bash -c命令中:

rlwrap bash -c 'while read line; do echo "line: $line"; done'

請注意,根據您要為此使用的程式碼,引用可能會變得有些難看。

引用自:https://unix.stackexchange.com/questions/29998