Shell 脚本中 command not found 错误

今天在写一个磁盘空间满了的时候的报警脚本。 步骤如下:

在window下用notepad++写好了脚本,通过cygwin上传到centos server 端。

然后 chmod u+x test.sh更改其可执行权限。

 

然后又用命令:

sh test.sh

 

执行该脚本文件以验证其语法是否正确,没想到问题一大堆:

: command not found: line2:

: command not found: line12:

: command not found: line15:

: command not found: line18:

: command not found: line23:

: command not found: line26:

 

一看上面的这几行,出错的可都是空行啊、怎么空行也报错?

于是千搜万搜,总算搜出结果来了,是由于一下原因引起的:

在cygwin下编写shell script是,script在执行的时候,其中包含的空行会提示 /r. command not found错误信息。这是win dos与*nix文本编辑方式不同造成的。可以使用cygwin工具dos2unix将script改为unix格式。

参考这个页面 http://www.tamilramasamy.com/2008/07/r-command-not-found-in-cygwin.html

原文如下:

: $'\r': command not found in Cygwin

If you happen to have this kind of error for no reason, please make sure you convert your shell script file to UNIX format using any text editor like Notepad++. Initially it seems like a weird error but yet another valid issue with Cygwin + XP editor. 

Here is an example, If you create a script in Notepad++ 

-------------------------------------------------------------------
#!/bin/bash
#
# My Cygwin weird error
#
clear
echo "Knowledge is Power"
-------------------------------------------------------------------

When you run this script directly from Cygwin (by editing it from Notepad) you might forget to set the file format to Unix. This often result in following error. 

-------------------------------------------------------------------

./print_a_line.sh: line 1: $'\r': command not found
Knowledge is Power

-------------------------------------------------------------------

Or, 

You can convert them to UNIX format using shell utility dos2unix 
所以最后的解决办法就是:
$ dos2unix test.sh
dos2unix: converting file test.sh to UNIX format ...
$ sh test.sh
 
另外一个错误就是 if 语句中的条件比较:
原来的是:
alert_threshold=90
output=85
if [ $output >= $alert_threshold ]
这样写会报错如下:
line 3: [:unary operator expected
改成如下形式:
if [[ $output -ge $alert_threshold ]]
Note: 注意"[[“后面和”]]"的前面都有空格
结果一看,上面的那些错误都没有了、、、◕‿◕
 
参考: http://see.xidian.edu.cn/cpp/view/7005.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值