`
lxs647
  • 浏览: 523096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    java调用shell脚本执行sqlldr与存储过程

    在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误: 1、sqlldr: command not found 2、sqlplus: command not found 3、0750: You may need to ...

    shell脚本执行jps时:-bash: jps: command not found

    这个场景中遇到的问题是,当尝试通过shell脚本来远程执行`jps`(Java Process Status)命令时,系统返回了`-bash: jps: command not found`的错误。`jps`是Java开发工具包(JDK)的一部分,用于列出正在运行的Java...

    shell脚本学习指南,中文清晰带书签

    - **定义与作用**:Shell脚本是用于Unix/Linux系统中的自动化任务的一种编程语言。它通过一系列的命令来实现对系统的控制和管理,可以极大地提高工作效率,减少重复性劳动。 - **应用场景**: - 系统管理和维护:...

    RockLinux9 bash yum command not found

    在使用Linux系统时,我们经常会遇到“command not found”这样的错误提示,这通常意味着系统找不到你尝试执行的命令。在本例中,问题出现在RockLinux9系统上,用户尝试使用`bash` shell运行`yum`命令时遇到了这个...

    shell脚本的demo

    Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash或其他Shell解释器。本示例“shell脚本的demo”提供了一个基础的教程,旨在帮助初学者理解并掌握Shell脚本的基本语法和用法。下面将详细阐述...

    oracle常见问题大全

    这通常涉及到初级用户在日常操作中遇到的简单但困扰的问题,例如登录失败、SQL语句错误、权限不足等。解决这些问题需要理解Oracle的用户管理、权限模型以及SQL语法基础。例如,忘记密码时,可以通过重建密码文件或...

    laravel 出现command not found问题的解决方案

    在使用 Laravel 框架的过程中,有时可能会遇到“command not found”的问题,这通常是由于 Laravel 的可执行文件没有被正确地添加到系统的 PATH 环境变量中导致的。Laravel 的命令行工具 `laravel` 实际上是位于 `~/...

    30+个视频+shell脚本视频教程

    Shell脚本在计算机科学领域中非常重要,特别是在Linux和Unix系统管理、自动化任务处理等方面有着广泛的应用。接下来,我们将基于这个主题深入探讨Shell脚本的相关知识点。 ### Shell脚本基础 #### 1. 什么是Shell...

    expect5.45

    如果是在shell脚本中使用`expect`,可能还需要使用`#!/usr/bin/expect`作为脚本的首行,指定解释器。 `expect`脚本的基本结构包括`spawn`命令来启动进程,`expect`命令来等待预期的输出,以及`send`命令来发送输入...

    shell脚本使用手册

    Shell脚本是Linux/Unix操作系统中的一个强大工具,它允许用户编写自动化任务,执行一系列命令,简化日常系统管理。在“shell脚本使用手册”中,我们将会深入探讨如何创建和使用这些脚本来提高工作效率。 一、Shell...

    linux定时任务出现command not found解决办法

    当您尝试在Linux环境中运行一个命令或脚本时,如果系统返回“command not found”的错误消息,这意味着当前的Shell环境未能在PATH环境变量中找到该命令对应的可执行文件。PATH环境变量定义了Shell搜索外部命令时所...

    shell脚本编程100例?_shell_Shell脚本100例_

    在IT领域,Shell脚本是一种极其重要的自动化工具,尤其在Linux和Unix系统中。它允许用户通过编写一系列命令来执行复杂的任务,节省时间并提高工作效率。"Shell脚本编程100例"教程可能涵盖了从基础到高级的各种脚本...

    用Linux Command Shell模拟DOS命令

    在Linux中,shell脚本是一种强大的自动化工具,能够执行各种任务,从简单的命令到复杂的程序逻辑。以下是对如何使用Linux shell脚本来模拟DOS命令的详细说明。 首先,了解shell脚本的基础至关重要。一个简单的shell...

    Shell脚本汇总.zip

    Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash shell或者其他类Unix系统的shell。这个“Shell脚本汇总.zip”文件很可能包含了多个关于Shell脚本的示例、教程或实用脚本,旨在帮助用户学习和...

    shell脚本学习

    在IT领域,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,简化日常任务。本文将基于提供的"shell脚本学习"主题,结合"linux shell 脚本攻略"和"shell...

    shell脚本笔记

    Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash或其他Shell变体,如Sh、Csh或Ksh。本笔记将深入探讨Shell脚本的基础知识、语法特性、常用命令以及如何编写实用的脚本来提高日常工作效率。 ...

    shell脚本学习指南

    总结,Shell脚本是Linux/Unix系统中不可或缺的一部分,掌握了Shell脚本的编写,就能更好地驾驭这些操作系统,实现各种自动化任务。通过不断实践和学习,你将能编写出更复杂、更高效的脚本来解决实际问题。

    Linux 下 Shell的工作原理

    在这种情况下,Shell会返回错误信息,如"command not found",并让用户重新输入命令。此外,`make`命令是一个示例,它用于根据Makefile编译程序。如果目标文件不存在,`make`会报告错误并停止执行。 Linux系统提供...

    MinGW && MSYS编译ffmpeg

    - 如果出现`./configure: line <xxx>: pr: command not found`错误,表示MSYS中缺少`pr`命令。解决办法是下载coreutils包中的`pr.exe`文件,并将其放置在MSYS的`bin`目录下。 2. **编译与安装FFmpeg**: - 使用`...

Global site tag (gtag.js) - Google Analytics