Ubuntu Bash不理解Bash脚本

时间:2011-12-27 18:44:00

标签: bash ubuntu

我是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'错误消息是什么?甚至评论似乎都不被理解......

4 个答案:

答案 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命令,dos2unixdtou,具体取决于可用的内容。

答案 2 :(得分:1)

将您的代码从此页面剪切并粘贴到Ubuntu上的编辑器中,这样您就可以修复您的行结尾(例如,Linux上的\r\n和Linux上的\n

如果您将其保存为新文件,我相信它会正常工作。

答案 3 :(得分:1)

听起来文件中有一些无关的不可打印字符 在Vi / Vim中打开文件:
[ESC]进入命令模式
然后输入:set list