在執行腳本時,我遇到了以下問題:將命令的多行結果放入變量時,看起來多行字符串的最後一行(空行)消失。因爲我將保存在數據庫中的代碼塊和包含「\ n」字符的代碼塊連接在一個可讀的字符串中,因此我不能丟失它包含的回車符。如果我失去了一些「\ N」的,我會失去我的代碼縮進的一部分),爲什麼我的多行字符串的最後一行(空行)在將其保存在變量中時會消失?
這裏是代碼來說明我的問題:
test="A
B
";
test2=`echo "$test"`;
echo "||$test2||";
這將返回
||A
B||
w ^往往微不足道我期待:
||A
B
||
- >最後一個(空)線已經消失......並回車在我的人類可讀的代碼從而錯過。只有當我的多線串的最後一行是空的發生
這個問題......
你知道
- 爲什麼最後一行消失?
- 我如何確保我最後的空行保存在我的多行字符串變量中?
注意,我當然不能用最簡單的解決
test2="$test";
因爲整個過程相當:
test="^A\n\nB\n^"
test2="`echo "$test" | sed -e 's/\^//g'`";
,但我試圖簡化問題,最讓我可以。
命令替換總是修剪後的新行 - - 這符合設計和規範。否則,'foo = $(echo foo)'不會包含字符串'foo',但會有一個尾隨的換行符 - 這會混淆人們。 –
順便說一句,哪個特定版本的ksh是這個?有很多不同的,不兼容的實現浮動。 –
@CharlesDuffy無法找到我正在使用的ksh版本的命令...我試過「ksh --version」,「echo $ {。sh.version}」&「echo $ KSH_VERSION」。如果你知道識別我的ksh版本的其他可能性,我非常感興趣;-) – Seba991