1
NL=$'\n'
CMD=""
CMD="$CMD echo Hello ; $NL"
CMD="$CMD echo World ; $NL"
$CMD
上面的代碼給出了以下輸出,其後面的所有東西都會循環。bash echo - 如何表示命令的結尾
Hello ; echo World ;
無論是新的行字符還是分號在這裏都不起作用。出了什麼問題?
NL=$'\n'
CMD=""
CMD="$CMD echo Hello ; $NL"
CMD="$CMD echo World ; $NL"
$CMD
上面的代碼給出了以下輸出,其後面的所有東西都會循環。bash echo - 如何表示命令的結尾
Hello ; echo World ;
無論是新的行字符還是分號在這裏都不起作用。出了什麼問題?
要啓用反斜槓轉義的解釋,您必須添加-e標誌以回顯。
:/$ NL='\n'
將換行符放入NL變量中。
:/$ CMD=""
將CMD設置爲空字符串。
:/$ CMD="$CMD echo Hello ; $NL"
重置CMD,因爲舊的CMD是 「」,那麼新的 「回聲您好; \ n」 個
:/$ CMD="$CMD echo World ; $NL"
重置CMD,因爲舊的CMD是 「回聲您好; \ n」,那麼新的「回聲您好; \ n回聲世界; \ n」 個
:/$ echo -e $CMD
echo Hello ;
echo World ;
這是如何回答這個問題? – melpomene
http://mywiki.wooledge.org/BashFAQ/050 – melpomene
看看這個鏈接@melpomene給你。你爲什麼想這樣做?如果您不介意危險地玩,請探索該主題上的'eval $ CMD'和變體('eval「$ CMD」',...)。然後決定做任何你想做的事情(一個[XY問題](http://mywiki.wooledge.org/XyProblem)?)以不同的方式。 –
假設你使用'eval'路線,你根本不需要換行;分號本身分隔兩個命令就好了。當'$ CMD'被擴展爲不帶引號時,無論如何都會放棄換行符,但分號被視爲'echo'命令的參數(也就是說,擴展不會被重新解析)。 – chepner