使用echo打印变量时发出问题

时间:2014-12-02 16:21:13

标签: shell

我在使用echo打印两个变量时遇到问题。以下是脚本中的代码段: -

tdaydatefile=$(date +'%m%d%Y')
ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
echo "Dumping all network connections to $HOME/MyLog/netstat_$ip_$tdaydatefile.csv!"

运行脚本时,它只显示在下面: -

Dumping all network connections to /root/MyLog/netstat_12022014.csv!

它不会打印系统的ip地址(ip变量)。如果我在echo中用tdaydatefile替换ip,它会打印ip并忽略tdaydatefile变量。

知道这里有什么不对吗?

1 个答案:

答案 0 :(得分:2)

由于 _ 是有效的变量名字符,因此您需要告诉shell变量名称的结束位置。 (在您的代码中,shell将ip_解释为变量名。)

这可以通过将变量名称括在{...}中来完成,即在这种情况下使用${ip}

echo "Dumping all network connections to $HOME/MyLog/netstat_${ip}_$tdaydatefile.csv!"

请注意,$HOME$tdaydatefile没有必要,因为/.不是有效的变量名称字符。

但是,如果有疑问,请使用${...} - 它也有助于提高可读性。