我正在创建一个bash脚本来创建备份,但是bash脚本mkdir在最后用一些特殊字符命名文件夹。如果我是目录,那么这个名字会出现一个?最后我知道的是终端显示未识别特殊字符的方式。
如何让bash脚本创建文件夹,而不在末尾添加这个无法识别的特殊字符。
如有任何帮助,我们将不胜感激。
见下面的脚本:
#!/bin/bash
mkdir -p "/var/backups/Backup"
mysqldump -u user1 -ptest DB tbl1 > "/var/backups/Backup/tbl1.sql"
DAY=$(date +%Y%m%d%H%M%S)
zip -r /var/backups/bkup-$DAY.zip /var/backups/Backup
A类显示如下:
#!/bin/bash^M$
mkdir -p "/var/backups/Backup"^M$
mysqldump -u user1 -ptest DB tbl1 > "/var/backups/Backup/tbl1.sql"^M$
DAY=$(date +%Y%m%d%H%M%S)^M$
zip -r /var/backups/bkup-$DAY.zip /var/backups/Backup
最佳答案
^M
输出中的CR
(cat -A
)字符是问题所在:shell仅将LF
视为“行尾”标记,而前面的CR
字符将成为前一个单词的一部分。在POSIX(ish)系统中,路径名中只禁止使用“/”和“\0”字符。
您可以使用dos2unix
或
vim yourfile.sh
:set ff=unix
:wq