从网上复制shell脚本 到 linux下运行 碰到的各种问题汇总

从网上复制shell脚本 到 linux下运行 碰到的各种问题汇总

快捷键Ctrl+U查看网页源码
一、报错现象:': No such file or directory

解决方法:在linux系统下执行:dos2unix filename

问题原因:本质是文件中二进制符号^M乱码问题

 参考链接:Linux下去掉^M的四种方法_linux shell_脚本之家
二、报错现象:env: can't execute 'bash': No such file or directory

解决方法:将#!/bin/bash 替换为 #!/bin/sh

问题原因:本质是sh和bash问题

从 ubuntu 6.10 开始,ubuntu 就将先前默认的 bash shell 更换成了dash shell,其表现为 /bin/sh 链接倒了 /bin/dash 而不是传统的 /bin/bash

可以通过 ls -l /bin/*sh 命令看到:

所以提示找不到bash,解决方法 使用 bash 代替 sh 运行脚本:bash test.sh 或者 将#!/bin/bash 替换为 #!/bin/sh

三、各种标点符号乱码问题
1、报错现象:提示xxx quot: not found

解决方法:用" 替换 "

问题原因:标点符号" 乱码问题,用" 替换 " 即可

2、&&标点乱码问题:用&&,替换乱码字符&&
3、>>乱码问题:用>>,替换乱码字符 >>
4、>或<乱码问题:用>或<,替换乱码字符 &gt;
四、报错现象:Syntax error: Bad for loop variable错误解决方法

参考链接:

Syntax error: Bad for loop variable错误解决方法

语法错误:循环变量错误(Syntax error: Bad for loop variable)_电脑培训

解决方法:将for循环的方法替换为while循环的方法

问题原因:for (( expr ; expr ; expr ))这种 C 语言格式语法在sh不可用

从 ubuntu 6.10 开始,ubuntu 就将先前默认的 bash shell 更换成了dash shell,其表现为 /bin/sh 链接倒了 /bin/dash 而不是传统的 /bin/bash

可以通过 ls -l /bin/*sh 命令看到:

所以在使用 sh 命令执行脚本的时候实际使用的是 dash,而 dash 不支持这种 C 语言格式的 for 循环写法。

五、linux  #!/bin/sh脚本中eq,ne,le,ge,lt,gt意义

参考链接:https://www.cnblogs.com/hankyoon/p/12612549.html

if [ 1 -ne 1 ];then
...
fi

-eq: 等于
-ne: 不等于
-le:  小于等于
-ge: 大于等于
-lt:   小于
-gt:大于

六、报错现象:syntax error: unexpected end of file (expecting "}")

解决方法:找到缺少的}符号,加上即可 

问题原因:{ }符号没有成对出现


 

猜你喜欢

转载自blog.csdn.net/a1809032425/article/details/131487689
今日推荐