python - Bash 变量包含 '\r' - 回车导致我的脚本出现问题

标签 python bash variables carriage-return

我有一个 bash 脚本 (rsync.sh),可以正常工作,并且其中包含以下行:

python/path/to/rsync_script.py $EMAIL“$RSYNC $PATH1 $PATH1_BACKUP”

我想将命令(实际上比此处显示的要长得多,因为我的变量名称更长)分成两部分并使用如下内容:

python /path/to/rsync_script.py \
$EMAIL "$RSYNC $PATH1 $PATH1_BACKUP"

但是当我这样做时,我收到错误:

scripts/rsync.sh:第 32 行:$'admin@mydomain.com\r':找不到命令

它将回车符 \r 放在那里。

如何打断此行而不包含回车符?

最佳答案

问题看起来像是 Windows 行结尾。

以下是在 Python 中进行检查的方法。

repr(open('rsync.sh', 'rb').read())
# If you see any \\r\\n, it's windows

修复方法如下:

text = open('rsync.sh', 'r').read().replace('\r\n', '\n')
open('rsync.sh', 'wb').write(text)

编辑

这是一些显示问题的代码。

# Python:
open('abc-n.sh', 'wb').write('echo abc \\' + '\n' + 'def')
open('abc-r-n.sh', 'wb').write('echo abc \\' + '\r\n' + 'def')

然后运行我们制作的文件...

$ sh abc-n.sh 
abc def
$ sh abc-r-n.sh 
abc 
abc-r-n.sh: 2: def: not found

关于python - Bash 变量包含 '\r' - 回车导致我的脚本出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424828/

相关文章:

python - TensorFlow:Saver 有 5 个模型限制

python - 当 python 文件与声音文件位于不同的目录时,如何播放声音?

python - Python中的过滤操作

Python Virtualenv 检查环境

swift - 如何检查 os x 中的框架可用性?

batch-file - 计算批处理脚本中两个变量的总和

python - 尝试将邮政编码转换为二进制时找不到错误

linux - 将文件 1 中的数据追加/补充到文件 2 (linux)

variables - Objective-c - 全局变量

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP