为什么脚本输出和终端命令之间存在差异?

时间:2017-09-25 14:52:00

标签: bash shell quoting

为什么bash会改变我的脚本输出与终端输出相比?

如果我输入

dig +noall +answer NS google.com

I get this

但如果我用脚本

#!/bin/bash
echo "Domain: "
read DOMAIN
echo
DIG=$(dig +noall +answer NS $DOMAIN)
echo $DIG

我明白了 this

我希望得到与在控制台中键入命令相同的结果。

我知道我可以在文件中保存和排序(不完全排序但是awk)但是如果可能的话我想得到相同的结果,而不必将结果保存在文件中。

我正在使用Ubuntu 16.04,如果这可以帮助你

1 个答案:

答案 0 :(得分:2)

Quote your variables!

$ DIG=$(dig +noall +answer NS google.com)

$ echo $DIG
google.com. 86308 IN NS ns2.google.com. google.com. 86308 IN NS ns3.google.com. google.com. 86308 IN NS ns1.google.com. google.com. 86308 IN NS ns4.google.com.

$ echo "$DIG"
google.com.             86295   IN      NS      ns3.google.com.
google.com.             86295   IN      NS      ns1.google.com.
google.com.             86295   IN      NS      ns4.google.com.
google.com.             86295   IN      NS      ns2.google.com.