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" &lt; yourscript.sh &gt; newscript.sh

您可以将脚本重定向到一个文件,您将看到该文件中的所有文本。

回车符 (asc 13, \r) 只是重置光标而不跳到换行符。之后写入的每个文本都会覆盖当前行中的文本。 Windows 使用它来补充换行符。 Windows 文本模式就是这样

【讨论】:

啊,对不起,那个“测试”是一个测试,我复制错了。现在是正确的代码 我从答案中删除了代码。 非常感谢,我刚刚在 gedit 中为 \r 使用了“替换”,一切正常。非常奇怪的行为......我肯定会随时记住它。

以上是关于bashrc 中的奇怪行为:连接,相同的代码运行/失败 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms,在运行时在 CarouselView 中动态添加项目,奇怪的行为

tableViewCell 内容行为奇怪

switch 语句中的奇怪行为

Qt 从 main 启动 QTcpServer ...奇怪的行为

字典操作中的奇怪行为以及 Python 中的多处理

将 UIScrollView 滚动到键盘隐藏的 UITextView 中的奇怪行为