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
今天在写一个磁盘空间满了的时候的报警脚本。 步骤如下:
在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
原文如下:
所以最后的解决办法就是:
$ 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: 注意"[[“后面和”]]"的前面都有空格
结果一看,上面的那些错误都没有了、、、◕‿◕
相关推荐
在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误: 1、sqlldr: command not found 2、sqlplus: command not found 3、0750: You may need to ...
这个场景中遇到的问题是,当尝试通过shell脚本来远程执行`jps`(Java Process Status)命令时,系统返回了`-bash: jps: command not found`的错误。`jps`是Java开发工具包(JDK)的一部分,用于列出正在运行的Java...
- **定义与作用**:Shell脚本是用于Unix/Linux系统中的自动化任务的一种编程语言。它通过一系列的命令来实现对系统的控制和管理,可以极大地提高工作效率,减少重复性劳动。 - **应用场景**: - 系统管理和维护:...
在使用Linux系统时,我们经常会遇到“command not found”这样的错误提示,这通常意味着系统找不到你尝试执行的命令。在本例中,问题出现在RockLinux9系统上,用户尝试使用`bash` shell运行`yum`命令时遇到了这个...
Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash或其他Shell解释器。本示例“shell脚本的demo”提供了一个基础的教程,旨在帮助初学者理解并掌握Shell脚本的基本语法和用法。下面将详细阐述...
这通常涉及到初级用户在日常操作中遇到的简单但困扰的问题,例如登录失败、SQL语句错误、权限不足等。解决这些问题需要理解Oracle的用户管理、权限模型以及SQL语法基础。例如,忘记密码时,可以通过重建密码文件或...
在使用 Laravel 框架的过程中,有时可能会遇到“command not found”的问题,这通常是由于 Laravel 的可执行文件没有被正确地添加到系统的 PATH 环境变量中导致的。Laravel 的命令行工具 `laravel` 实际上是位于 `~/...
Shell脚本在计算机科学领域中非常重要,特别是在Linux和Unix系统管理、自动化任务处理等方面有着广泛的应用。接下来,我们将基于这个主题深入探讨Shell脚本的相关知识点。 ### Shell脚本基础 #### 1. 什么是Shell...
如果是在shell脚本中使用`expect`,可能还需要使用`#!/usr/bin/expect`作为脚本的首行,指定解释器。 `expect`脚本的基本结构包括`spawn`命令来启动进程,`expect`命令来等待预期的输出,以及`send`命令来发送输入...
Shell脚本是Linux/Unix操作系统中的一个强大工具,它允许用户编写自动化任务,执行一系列命令,简化日常系统管理。在“shell脚本使用手册”中,我们将会深入探讨如何创建和使用这些脚本来提高工作效率。 一、Shell...
当您尝试在Linux环境中运行一个命令或脚本时,如果系统返回“command not found”的错误消息,这意味着当前的Shell环境未能在PATH环境变量中找到该命令对应的可执行文件。PATH环境变量定义了Shell搜索外部命令时所...
在IT领域,Shell脚本是一种极其重要的自动化工具,尤其在Linux和Unix系统中。它允许用户通过编写一系列命令来执行复杂的任务,节省时间并提高工作效率。"Shell脚本编程100例"教程可能涵盖了从基础到高级的各种脚本...
在Linux中,shell脚本是一种强大的自动化工具,能够执行各种任务,从简单的命令到复杂的程序逻辑。以下是对如何使用Linux shell脚本来模拟DOS命令的详细说明。 首先,了解shell脚本的基础至关重要。一个简单的shell...
Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash shell或者其他类Unix系统的shell。这个“Shell脚本汇总.zip”文件很可能包含了多个关于Shell脚本的示例、教程或实用脚本,旨在帮助用户学习和...
在IT领域,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,简化日常任务。本文将基于提供的"shell脚本学习"主题,结合"linux shell 脚本攻略"和"shell...
Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash或其他Shell变体,如Sh、Csh或Ksh。本笔记将深入探讨Shell脚本的基础知识、语法特性、常用命令以及如何编写实用的脚本来提高日常工作效率。 ...
总结,Shell脚本是Linux/Unix系统中不可或缺的一部分,掌握了Shell脚本的编写,就能更好地驾驭这些操作系统,实现各种自动化任务。通过不断实践和学习,你将能编写出更复杂、更高效的脚本来解决实际问题。
在这种情况下,Shell会返回错误信息,如"command not found",并让用户重新输入命令。此外,`make`命令是一个示例,它用于根据Makefile编译程序。如果目标文件不存在,`make`会报告错误并停止执行。 Linux系统提供...
- 如果出现`./configure: line <xxx>: pr: command not found`错误,表示MSYS中缺少`pr`命令。解决办法是下载coreutils包中的`pr.exe`文件,并将其放置在MSYS的`bin`目录下。 2. **编译与安装FFmpeg**: - 使用`...