linux echo / print在打印多个变量时删除字符串中的1个空格

时间:2013-11-13 23:51:23

标签: linux scripting echo ksh

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

这是字符串。

IP_NET_TP0                                                                               _

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

好吧,如果你把它放到一个变量中,让我们说var1,然后按照下面的方式打印它,效果很好。

echo $var1 
echo "$var1"

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

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

WHY? ..我已尝试使用print打印变量,或者像$ {var1}一样打印变量,如果输出相同,则输出少1个空格。

以下显示,第一个用其他东西打印时,第二个单独打印时。

IP_NET_TP0                                                                             _
IP_NET_TP0                                                                               _

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

也许您正在错误地实例化变量。当我宣布它像var1="IP_NET_TP0"var1=IP_NET_TP0那样打印时,你做的工作正常。你使用bash还是不同类型的shell?你的.bash_profile或.bashrc中可能还有一些奇怪的东西导致这种情况。

答案 1 :(得分:1)

添加额外的patterne时,你没有正确地写回声

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}"

答案 2 :(得分:1)

问题已修复,因为字符串是将空格转换为制表符而构建的,有不同大小的制表符! ...在打印时可能导致解释问题,我在打印变量之前将所有选项卡转换为空格,因此大小不会再像这样更改var2= echo $ var1 |展开......并完成,尺寸现已修复,不再发生变化。

相关问题