如果在shell中定義一個指令,帶了管道,例如
CMD="ls -al | grep xx"
直接執行$CMD,會出現如下報錯
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
管道符會被解釋為普通字元
解決的辦法是通過eval
CMD="eval ls -al | grep xx"
另外如果CMD被用在if 或 while的語句中,需要用$($CMD)或`$CMD`來獲得結果,直接$CMD是不行的