我正在学习本教程,学习bash脚本,为我自动完成一些任务.我正在使用putty连接到服务器.
该脚本位于.../Documents/LOG:
#!/bin/bash
# My first script
echo "Hello World!"
Run Code Online (Sandbox Code Playgroud)
我为读/写/执行权限执行了以下操作
chmod 755 my_script
Run Code Online (Sandbox Code Playgroud)
然后,当我进入时./my_script,我收到标题中给出的错误.
一些类似的问题想看到这些,所以我认为它们可能有所帮助:
which bash
Run Code Online (Sandbox Code Playgroud)
/斌/庆典
和
echo $PATH
Run Code Online (Sandbox Code Playgroud)
在/ usr/local/sbin中:在/ usr/local/bin目录:/ usr/sbin目录:在/ usr/bin中:/ sbin目录:/ bin中:在/ usr /游戏:在/ usr/bin中/ MH
我尝试添加当前目录PATH,但这不起作用..
cow*_*wls 513
在Windows环境中创建脚本然后移植到Unix环境中运行时,我已经看到了这个问题.
尝试dos2unix 在脚本上运行:
http://dos2unix.sourceforge.net/
或者只是使用vi和测试在Unix env中重写脚本.
Unix使用不同的行结尾,因此无法读取您在Windows上创建的文件.因此它将^ M视为非法角色.
如果要在Windows上编写文件然后移植,请确保将编辑器设置为以UNIX格式创建文件.
在屏幕右下方的notepad ++中,它会告诉您文档格式.默认情况下,它会说Dos\Windows.要改变它去
Niv*_*eph 443
在终端中运行以下命令
sed -i -e 's/\r$//' scriptname.sh
Run Code Online (Sandbox Code Playgroud)
然后试试
./scriptname.sh
Run Code Online (Sandbox Code Playgroud)
它应该工作.
Md.*_*man 11
问题是dos线结束.以下将转换为unix
dos2unix file_name
Run Code Online (Sandbox Code Playgroud)
注意:您可能需要先安装dos2unix yum install dos2unix
另一种方法是使用sed命令搜索并将dos行结束符替换为unix格式:
$sed -i -e 's/\r$//' your_script.sh
Run Code Online (Sandbox Code Playgroud)
kal*_*ari 10
您的文件有Windows行结尾,这让Linux感到困惑.
删除虚假的CR字符.您可以使用以下命令执行此操作:
$ sed -i -e 's/\r$//' setup.sh
Run Code Online (Sandbox Code Playgroud)
我能够通过在Gedit 中打开脚本并使用正确的Line Ending选项保存它来解决这个问题:
文件 > 另存为...
在Save As提示的左下角,有字符编码和行尾的下拉菜单。将 Line Ending 从 更改Windows为Unix/Linux然后保存。
![gedit“另存为”提示]](https://i.stack.imgur.com/TN5Ae.png)