2017-03-15 67 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。