Ubuntu Bash无法理解的Bash脚本
我是Bash脚本的新手。我运行在Ubuntu下面这个简单的脚本:Ubuntu Bash无法理解的Bash脚本
sudo bash -x Script.sh
输出:
+ $'\r'
: command not found
+ $'\r'
: command not found
+ $'\r'
: command not found
+ adminEmail=$'[email protected]\r'
+ $'\r'
: command not found
' echo 'database name:
database name:
+ read $'dbname\r'
实际的脚本:
#!/bin/bash
# Installation script for latest Wordpress website on Ubuntu
#
# Kave
# December 27, 2011
adminEmail="[email protected]"
echo "database name:"
read dbname
这都是什么'\r'
错误消息来了?即使评论似乎不被理解......
您通过Windows机器下载了该文件,并且您有CRLF行结尾(即C和相关语言中的\r\n
)。
删除DOS行尾。例如,编辑vim
中的文件并使用:set fileformat=unix
(加上返回)更改格式,然后将文件写回。替代技术可以使用tr
命令或dos2unix
或dtou
,具体取决于可用的内容。
剪切和从该页面的代码粘贴到你的Ubuntu的编辑器,所以你会得到你的固定线路的结局(\r\n
在Windows VS \n
在Linux为例)
如果你将它保存为新文件我相信它会正常工作。
听起来像文件中有一些无关的不可打印的字符。
使用vi/Vim的文件:
按[ESC]
进入命令行模式
然后键入:set list
一旦你列出了角色,你将如何去除它们?欢迎来到*。你的回答非常正确,但还没有完成。 – 2011-12-27 18:53:04
根本就
dos2unix scriptname
并执行脚本。
如果您没有该工具,则可以执行以下操作来安装它。
sudo apt-get install dos2unix
OR
执行下面的命令行黑客将文件转换。
tr -d '\015' <scriptname> scriptname.new
OR
sed -i 's/\x0D$//' scriptname
非常感谢.... – Houman 2011-12-27 20:05:23
看起来你有行尾问题,但我不知道如何解决这个问题? – evotopid 2011-12-27 18:46:37
这对我的作品...拱Linux i686 – Paul 2011-12-27 18:46:57
从命令行执行'dos2unix scriptname scriptname'。 '\ r'是回车符,你是在Windows机器上创建文件并发送给linux的? – 2011-12-27 18:49:20