我在使用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变量。
知道这里有什么不对吗?
答案 0 :(得分:2)
由于 _
是有效的变量名字符,因此您需要告诉shell变量名称的结束位置。 (在您的代码中,shell将ip_
解释为变量名。)
这可以通过将变量名称括在{...}
中来完成,即在这种情况下使用${ip}
:
echo "Dumping all network connections to $HOME/MyLog/netstat_${ip}_$tdaydatefile.csv!"
请注意,$HOME
或$tdaydatefile
没有必要,因为/
和.
不是有效的变量名称字符。
但是,如果有疑问,请使用${...}
- 它也有助于提高可读性。