我的命令是:
df=$(echo `df -h | head -3`)
echo $df
我希望它能显示df -h
输出的前三行:
Filesystem Size Used Avail Use% Mounted on
/abc/asdf 16G 5.6G 9.4G 38% /
abcd 1.9G 12K 1.9G 1% /dev
相反,它输出:
Filesystem Size Used Avail Use% Mounted on /abc/asdf 16G 5.6G 9.4G 38% / abcd 1.9G 12K 1.9G 1% /dev
echo $df
在我的shell脚本中输出换行符?head
的换行符?答案 0 :(得分:4)
引用变量以防止分词:
echo "$df"
99%的时候你应该在使用它们时引用变量。如果您真的希望它们受到单词拆分和通配操作,则仅使用不加引号的变量。在某些情况下,不需要引号(例如a=$b
之类的分配),但多余的引号不会受到影响。
我刚认为您在echo
内也使用了$()
。我不知道为什么,但你也需要引用:
df=$(echo "`df -h | head -3`")
但你不需要回声,你可以写:
df=$(df -h | head -3)
答案 1 :(得分:1)
您需要设置IFS变量。
$ df=$(IFS=$''; echo `df -h | head -3`)
$ echo $df
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 4.2G 9.7G 31% /
devtmpfs 1010M 0 1010M 0% /dev
$