【问题标题】:linux echo/print removing 1 space in string when printing multiple variableslinux echo / print在打印多个变量时删除字符串中的1个空格
【发布时间】:2013-11-26 19:49:18
【问题描述】:

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

这是字符串。

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                                                                               _

任何帮助都会很棒。

【问题讨论】:

  • 试试printf(这也是一个命令,甚至是bash builtin
  • 这是一个很好的结果,但结果相同,我使用的是printf "\"%s\"" "${mat[c][0]}" 我将我的 var name 更改为 mat[][],但行为是相同的。

标签: linux scripting echo ksh


【解决方案1】:

也许您错误地实例化了变量。当我像这样声明它var1="IP_NET_TP0"var1=IP_NET_TP0 时,按照你的方式打印它就可以了。您使用的是 bash 还是其他类型的 shell?您的 .bash_profile 或 .bashrc 中也可能有一些奇怪的东西导致了这种情况。

【讨论】:

  • 我正在使用 KSH ...,我仍在努力让这件事正常工作
  • 按照我上面提到的方式实例化 var1 时,我没有遇到这个问题。你如何用这个值声明变量?那可能是错误。如果不是这样,则可能与您的 shell 配置方式有关。
  • var1 来自 sql 查询,它带有所有这些选项卡和空格,正如我所说,如果我只是打印它,它就可以工作,但是如果我在我的内容中添加其他内容我要打印了,它按照我描述的方式失败了。
  • 尝试静态抓取该值,就像您将其复制并粘贴到您的问题中一样,将其分配给一个变量,看看是否会发生同样的事情。如果不是,那么在将变量分配给sql查询结果时一定有问题。
  • 同样的事情我的朋友...我刚刚注意到实际键入字符串的是,我的第一个选项卡比其他选项卡短,让我尝试克服这一点,看看会发生什么。跨度>
【解决方案2】:

你在添加额外的模式时没有正确地写出回声

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

【讨论】:

  • 所有选项都写得很好,它们被正确解释,这些只是我尝试过的一些不同的打印。结果与我尝试过的所有回声,打印,printfs,引号之间,没有它们,使用{}等都是一样的,哈哈我不知道还能做什么。
  • 使用 expand 解决的问题。
  • 你确定它不见了吗?我在这里测试并且字符存在,但由于 \t 似乎丢失了。用 |wc -c 查看有多少字符
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多