我有一个 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/