如何在 echo 语句中包含命令?

如何在 echo 语句中包含命令?

很简单,但我在这里没有找到确切提出这个问题的问题。

我以为这会起作用,但事实并非如此。

echo "Your disk usage is ${df -k -h}."

我如何使上述工作正常进行?

答案1

使用$(),不使用${}

echo "Your disk usage is $(df -h)."

请注意,它df -h具有多行输出(一行用于标头,一行用于每个已安装的文件系统),因此将其包含在 echo 语句中看起来非常难看。

您可以通过更具体地说明要显示的内容(例如,仅包含您的主目录的文件系统的磁盘使用情况)并仅提取要打印的详细信息来解决此问题。例如:

printf 'Your disk usage on %s is %s\n' $(df -h ~ | awk 'NR==2 {print $6, $3}') 

答案2

ksh需要:

echo "... ${df -k -h;}"

如果您想显示当前目录所在文件系统的使用百分比,并且您使用的是安装了最新util-linux软件包的 Linux 系统,您应该这样做:

printf "Your disk usage is:\t"
(until findmnt -noTARGET,USE% .;do cd ..; done)

相关内容