【发布时间】:2018-03-08 23:38:08
【问题描述】:
我的 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(奇怪)。
【问题讨论】:
-
你是说你在末尾附加了一个额外的字符
c,而它不太可能有? (除了未扩展的变量值)。您是否在命令行上运行此脚本?您是否偶然在 Windows 编辑器 (Notepad++) 中编辑了脚本? -
我刚刚将它复制/粘贴到我的机器上,效果很好
-
实际上我是通过远程登录到我的 RHEL5 桌面运行的,但没关系,因为我尝试直接在桌面上运行并且结果相同
-
如果文件来自 Windows,那么以
\r结尾的行可能会导致此类问题,尤其是当您在不同平台上进行编辑时。 -
请阅读stackoverflow.com/tags/bash/info。它要求您在发布前检查的第一件事是您的脚本是否使用 DOS 行尾。
标签: bash shell scripting string-concatenation