我是Bash Script的新手。我在Ubuntu中运行以下简单脚本:
sudo bash -x Script.sh
输出:
+ $'\r'
: command not found
+ $'\r'
: command not found
+ $'\r'
: command not found
+ adminEmail=$'info@domain.com\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="info@domain.com"
echo "database name:"
read dbname
所有这些'\r'
错误消息是什么?甚至评论似乎都不被理解......
答案 0 :(得分:12)
简单地做
dos2unix scriptname
并执行您的脚本。
如果您没有该工具,可以执行以下操作进行安装。
sudo apt-get install dos2unix
或
执行以下命令行黑客转换文件。
tr -d '\015' < scriptname > scriptname.new
或强>
sed -i 's/\x0D$//' scriptname
答案 1 :(得分:10)
您是通过Windows计算机下载了该文件,并且您有CRLF行结尾(在C和相关语言中为\r\n
)。
删除DOS行结尾。例如,在vim
中编辑文件并使用:set fileformat=unix
(加上 Return )更改格式,然后将文件写回。替代技术可以使用tr
命令,dos2unix
或dtou
,具体取决于可用的内容。
答案 2 :(得分:1)
将您的代码从此页面剪切并粘贴到Ubuntu上的编辑器中,这样您就可以修复您的行结尾(例如,Linux上的\r\n
和Linux上的\n
如果您将其保存为新文件,我相信它会正常工作。
答案 3 :(得分:1)
听起来文件中有一些无关的不可打印字符
在Vi / Vim中打开文件:
按[ESC]
进入命令模式
然后输入:set list