【问题标题】:String starts again after every variable [Bash]字符串在每个变量后重新开始 [Bash]
【发布时间】:2017-08-02 08:22:10
【问题描述】:

我试图在一个字符串中使用多个变量,但是在每个变量之后,字符串又重新开始并覆盖了开头:

#!/bin/bash
var1="ABCDEFG"
var2="hi"
echo "${var1} ${var2}"
echo "$var1 $var2"

应该输出

ABCDEFG hi

但两个回显输出

 hiDEFG

另外,如果我只使用一个变量并将文本放在变量之后,它仍然会覆盖...

这里还有一个例子: https://stackoverflow.com/a/17862845/8363344

bla=hello
laber=kthx
echo "${bla}ohai${laber}bye"

这应该输出:

helloohaikthxbye

但它输出:

byeikthx

我开始使用 .sh

sudo bash path/bash.sh

但是使用 sudo sh 就不行了...

我使用 Ubuntu 16.04(作为虚拟机)

谢谢 丹尼斯

【问题讨论】:

  • 这很奇怪。您能否仅从 shell(而不是脚本)输出相同的命令。 #> echo "${var1} ${var2}"
  • 刚试了下,在shell里运行正常,输出“ABCDEFG hi”。

标签: linux bash shell ubuntu


【解决方案1】:

它可能是您输入字符串中的回车符。

您可以通过管道将echo 传递给tr 命令以将其从输出字符串中删除:

 echo "${var1} ${var2}" | tr -d '\r'

【讨论】:

  • 这行得通,谢谢!!那么如何删除回车符,或者我总是必须使用 tr :S 管道?
  • 你可以用 sed(GNU sed) 清理你的脚本:sed -i 's/\x0D//g' script.sh.
猜你喜欢
  • 2013-07-15
  • 2022-01-25
  • 2018-09-23
  • 2017-09-15
  • 2011-05-14
  • 2022-10-15
  • 2014-07-03
  • 2012-08-12
  • 2019-03-28
相关资源
最近更新 更多