bashrc 中的奇怪行为:连接,相同的代码运行/失败 [重复]
Posted
技术标签:
【中文标题】bashrc 中的奇怪行为:连接,相同的代码运行/失败 [重复]【英文标题】:Weird behavior in bashrc: concatenate, same code run/fail [duplicate] 【发布时间】:2017-01-04 19:07:43 【问题描述】:我有一个装有 CentOS 6 的虚拟机,我正在从 bashrc 加载一些脚本。 一切正常,但我想将相同的代码和脚本复制粘贴到同一 VM 的旧备份中,但出现错误:“文件意外结束”。当我想与另一个人共享这些脚本时,同样的错误也不得不处理(他有相同的虚拟机)。
于是我开始调试了一下,发现他不喜欢的一行是(正在解析一个数组:
COUNTER=1
while [[ ! -z $SCRIPT[$COUNTER] ]]; do
而且他也不喜欢这个(它与“while”逻辑不完全相同,但它确实有效):
for i in $Script[@]; do
所以,我将其替换为:
for ((i = 0; i < $#SCRIPT[@]; i++)); do
现在我尝试使用相同的代码获取错误名称,并且不再发生错误。
我也有这种最奇怪的行为: 代码:
BASH_SCRIPTS_LOCATION='/mnt/hgfs/Shared-workspace/scripts/'
SCRIPT[0]='aliases.sh'
SCRIPT[1]='scripts_config.sh'
SCRIPT[2]='credentials.sh'
SCRIPT[3]='other_functions.sh'
SCRIPT[4]='ssh_functions.sh'
SCRIPT[5]='release_functions.sh'
SCRIPT[6]='test_functions.sh'
for ((i = 0; i < $#SCRIPT[@]; i++)); do
loadedScript=$BASH_SCRIPTS_LOCATION$SCRIPT[$i]
echo -e "$loadedScript"
done
终端输出(似乎“连接”它正在替换从第一个字符串/变量的乞求开始的字符:
aliases.shShared-workspace/scripts/
scripts_config.shworkspace/scripts/
credentials.shed-workspace/scripts/
other_functions.shorkspace/scripts/
ssh_functions.sh-workspace/scripts/
release_functions.shkspace/scripts/
test_functions.shworkspace/scripts/
我认为我使用了一些非常不合适的东西。但我不确定我应该寻找什么或什么。
欢迎任何建议或建议。
谢谢!
【问题讨论】:
最后一部分好像是windows的行尾。 【参考方案1】:这里没有显示,但是您的脚本在 shell 定义行中有回车符。编辑它们(例如使用 Notepad++ 或 tr -d "\015" < yourscript.sh > newscript.sh
)
您可以将脚本重定向到一个文件,您将看到该文件中的所有文本。
回车符 (asc 13, \r
) 只是重置光标而不跳到换行符。之后写入的每个文本都会覆盖当前行中的文本。 Windows 使用它来补充换行符。 Windows 文本模式就是这样
【讨论】:
啊,对不起,那个“测试”是一个测试,我复制错了。现在是正确的代码 我从答案中删除了代码。 非常感谢,我刚刚在 gedit 中为 \r 使用了“替换”,一切正常。非常奇怪的行为......我肯定会随时记住它。以上是关于bashrc 中的奇怪行为:连接,相同的代码运行/失败 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms,在运行时在 CarouselView 中动态添加项目,奇怪的行为