Bash字符串连接产生奇怪的结果

时间:2017-09-27 13:01:50

标签: bash shell scripting string-concatenation

我的bash代码file.sh

username=$1
pkgpath="/home/${username}_tmp.txt"
echo $username
echo $pkgpath

现在使用命令bash file.sh abc运行脚本应该产生结果:

abc
/home/abc_tmp.txt

但我得到的输出是:

abc
_tmp.txtc

有人可以解释为什么会发生这种行为以及如何获得所需的结果?

修改
我想提一下,使用pkgpath="/home/${username}"给我/home/abc(所需),但正在运行pkgpath="${username}_tmp.txt"会给我_tmp.txt(奇怪)。

1 个答案:

答案 0 :(得分:0)

当您运行命令render时,看起来您在abc之后以某种方式插入回车符。罪魁祸首可能是你的终端,或者你是复制粘贴命令并且包括bash file abc而没有意识到。

那么在第二行输出的bash实际上是^M,它被呈现为/home/abc^M_tmp.txt。您可以通过将命令的输出传递给_tmp.txtc来轻松验证这一点。