我使用本教程学习bash脚本来实现一些自动化 给我的任务。 我正在用putty连接服务器。

脚本,位于…/ /日志文件是:

#!/bin/bash
# My first script
echo "Hello World!"

我执行了下面的读/写/执行权限

chmod 755 my_script

然后,当我输入。/my_script时,我得到的是 标题。

一些类似的问题想要看到这些,所以我认为他们可能会 帮助:

$ which bash
/bin/bash

and

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh

我尝试将当前目录添加到PATH,但是没有 工作……


当前回答

您的文件有Windows行结束符,这让Linux感到困惑。

删除虚假的CR字符。您可以通过以下命令来完成:

 $ sed -i -e 's/\r$//' setup.sh

其他回答

问题是与DOS行结束。下面将把它转换为unix

dos2unix file_name

注意:你可能需要先用yum install dos2unix安装dos2unix

另一种方法是使用sed命令搜索并将DOS行结束字符替换为Unix格式:

$sed -i -e 's/\r$//' your_script.sh

如果你在Windows或Mac上使用Sublime Text编辑你的脚本:

单击View > Line ends > Unix并再次保存文件。

在notepad++中,您可以通过按下为文件设置它

编辑——> EOL转换——> UNIX/OSX格式

在Windows环境中创建脚本,然后移植到Unix环境中运行时,我就遇到过这个问题。

尝试在脚本上运行dos2unix:

http://dos2unix.sourceforge.net/

或者在Unix环境中使用vi和test重写脚本。

Unix使用不同的行结束符,因此无法读取您在Windows上创建的文件。因此,它将^M视为一个非法字符。

如果您想在Windows上编写一个文件,然后将其移植,请确保您的编辑器设置为以UNIX格式创建文件。

在屏幕右下方的notepad++中,它告诉你文档的格式。默认情况下,它会显示Dos\Windows。去改变它

设置- >首选项 新建文档/默认目录选项卡 选择Unix格式并关闭 创建一个新文档

在终端中执行以下命令

sed -i -e 's/\r$//' scriptname.sh

那就试试

./scriptname.sh

它应该会起作用。