某些情況下需要在指令裡加入單引號, 但是會有問題。下面是一個簡化後沒意義的例子:
cmd="ls '/etc'" echo "> Run $cmd" $cmd
執行結果如下:
> Run ls '/etc' ls: cannot access '/etc': No such file or directory
但是實際在 bash 上打入 ls '/etc' 卻沒問題。從這裡得知, 解法是用 eval 執行:
cmd="ls '/etc'" echo "> Run $cmd" eval $cmd
另外記得除錯時可以配合 set -x 顯示 bash 實際執行的指令, 或是用 bash -x 執行 script。
沒有留言:
張貼留言