1

当我尝试回显或打印字符串时,它打印得很好。

这是字符串。

IP_NET_TP0                                                                               _

结构为 IP_NET_TP0,9 个制表符 (\t),最后是 7 个空格和 1 个下划线。

好的,如果你把它放到一个变量中,比如说 var1 并按如下方式打印它,效果很好。

echo $var1 
echo "$var1"

但是,如果您向其中添加额外的文本,例如,添加引号或添加字母,它会从链中删除 1 个空格。

echo \"$var1\" 
echo "'"$var1"'"
echo "a" $var1

为什么?!.. 我试过用 print 打印变量,或者像这样 ${var1},如果输出相同,则少 1 个空格。

下图,第一个是用别的东西打印的,第二个是单独打印的。

IP_NET_TP0                                                                             _
IP_NET_TP0                                                                               _

任何帮助都会很棒。

4

3 回答 3

3

也许您错误地实例化了变量。当我这样声明var1="IP_NET_TP0"var1=IP_NET_TP0打印时,您所做的工作正常。您使用的是 bash 还是其他类型的 shell?您的 .bash_profile 或 .bashrc 中也可能有一些奇怪的东西导致了这种情况。

于 2013-11-14T02:27:05.900 回答
1

添加额外模式时,您没有正确写入回声

echo \"$var1\" -> echo "\"$var1\""
echo "'"$var1"'" -> echo "'$var1'"
echo "a" $var1 -> echo "a $var1"  #if space is needed between a and the var1

也尝试使用 ${var1} 来避免这样的混淆

var="1 x 1 = "
var1="Something"
echo "$var1"
echo "${var}1"
echo "${var1}"
于 2013-11-14T10:46:50.797 回答
1

问题已修复,因为字符串是在将空格转换为制表符时构建的,所以存在不同大小的制表符!...在打印时可能会导致解释问题,我所做的是,在打印变量之前,将所有制表符转换为空格,这样大小就不会再像这样改变var2=echo $var1 | expand` ...完成了,大小现在是固定的,不会再改变了。

于 2013-11-14T21:07:58.710 回答