Ksh
變數內的命令
我想用從文件中讀取的命令行填充變數並執行它。當它是單個命令時沒有問題。當我使用 | 時,它不起作用。有什麼幫助嗎???謝謝
$ f="ls -1" $ $f a a0 a1 a2 a3 b1 cfg cfile dfile e fcorreo.txt log logs work $ f="ls -1 | tail -1" $ $f ls: cannot access |: No such file or directory ls: cannot access tail: No such file or directory $ f='ls -1 | tail -1' $ $f ls: cannot access |: No such file or directory ls: cannot access tail: No such file or directory $ echo $f ls -1 | tail -1
問題是,管道 (
|
) 是由 shell 執行的“元”命令,它連接兩個不同的命令。ls -1 | tail -1
執行兩個命令 (ls
andtail
) 並使用 shell-construct (|
) 連接到兩個命令也是如此。(所以你在變數中的標題是不正確的,因為你的問題實際上是單個變數中的**多個**命令)無論如何,解決方案是使用 shell 解析/執行您的命令:
f="ls -1 | tail -1" sh -c "${f}"
或者,您也可以使用
eval
,它無需派生新的 shell 程序即可工作:f="ls -1 | tail -1" eval "${f}"