我有一個包含bash命令的文件,我逐一讀取它們並調用eval來運行它們。這工作正常,直到我嘗試運行「emacs-nw」。我已將問題簡化爲以下情況。任何人都可以解釋爲什麼emacs命令不工作,以及如何解決它?我懷疑它有一些引號和/或連字符,但無法找出問題,並且其中有空格的其他命令可以正常工作。通過從文件中讀取命令啓動emacs -nw遇到問題
考慮以下情況:
>> cmd="emacs -nw"; echo $cmd; eval $cmd;
可正常工作。 Emacs在當前shell中打開。
>> cmd="ls /tmp"; echo $cmd; eval $cmd;
這按預期工作。我看到/ tmp的內容。
>> echo "emacs -nw" > /tmp/cmds; cat /tmp/cmds |
while read cmd; do echo $cmd; eval $cmd; done
這是行不通的。我得到了「emacs:標準輸入不是tty」,就好像我正在嘗試將輸入管道輸入到emacs -nw(例如grep並將其輸入到較少的方式)。
>> echo "ls /tmp" > /tmp/cmds; cat /tmp/cmds |
while read cmd; do echo $cmd; eval $cmd; done
這個按預期工作,所以我不認爲引用/空格有問題。這留下了連字符,但如果我這樣做,說,「ls -alh」,那也可以。
那麼emacs命令怎麼了?
謝謝。
eval $ cmd dev/tty完美無缺!謝謝! – Jer
另外值得注意的是'ls'不必使用stdin,所以不會顯示問題。 –