2017-03-15 120 views

回答

4

當你通過字符串作爲參數,sed將其解釋爲一個文件名或文件名列表:

sed -e '1d' "$temp" 

當然,這不是你想要的。

這裏需要使用字符串<<<代替:

temp=$'Some text\nSome words\nLast word' 
sed '1d' <<< "$temp" 

輸出:

Some words 
Last word 
+4

請注意'\ n'因爲'$'\ n''引用而只是一個換行符。只有'\ n'',它將是一個字面的'\ n'。 –

+0

請參見[Bash中的單引號和雙引號之間的區別](https://stackoverflow.com/a/42082956/6862601)。 – codeforester

0

POSIX兼容的方式來做到這一點是:

temp="$(printf '%s\n' "$temp" | sed '1d')" 

如果你只需要一個bash兼容解決方案請參閱codeforester's answer,因爲這裏的字符串語法要好得多dable。