Dash

如何不分詞

  • April 17, 2019

我在一個名為 的文件中有一個命令列表,cmds每行一個命令。

我想獲取最後一個命令,將其設置為變數last_command並稍後執行。用$last_commandor "$last_command",或者任何更合適的。

我首先得到最後一個命令:

$ last_command="$(cat cmds | tail -1)"
$ echo $last_command
cat file1 file2 file\ 3

的最後一行cmdscat cat file1 file2 file\ 3.

問題是,當我執行時"$last_command",它不會知道和之間的空格file3文件名的一部分並給我一個錯誤。

假設您在文件中的命令是正確的並且所有必需的空格都逃脫了邪惡eval將幫助您。而不是$last_command執行這個:

eval $last_command

PS。eval通常不被視為最佳實踐,因為它很容易導致安全問題。

引用自:https://unix.stackexchange.com/questions/512556