我有一个包含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,所以不会显示问题。 –