出现这样的问题主要是在于 空字符 造成的,情况分为3种
第一种是windows上的文件,在Linux上运行,这种可以通过查看文件编码确认,unix + utf-8 可以解决。
第二种是网页复制的shell代码,里边有些未知编码的空格字符,这种情况多次全局替换,可以解决,实在不行照着代码敲一遍总可以解决。
第三种是 sed命令使用了换行符 \ 且在换行符后加入了空格,例如:
value1=test1
value2=test2
sed -i -r \
-e "s/(key1[ =]*).*/\1${value1}/g" \
-e "s/(key2[ =]*).*/\1${value2}/g" \
/root/test.conf
这是一个修改配置文件的脚本,但是在倒数第二行的\后边有空格,续行符后的空格在这里被解释为了文件路径,所以找不到文件。
来源:CSDN
作者:whatday
链接:https://blog.csdn.net/whatday/article/details/103924766