直接命令行输入运行命令但bash脚本没有

时间:2014-05-08 18:13:19

标签: linux bash shell

我能够成功运行

/opt/hbase/hbase_current/bin/hbase

在命令行上,当连接到GNU / Linux集群时。

但是,当我将此命令作为bash脚本的一行时,错误是:

: No such file or directoryopt/hbase/hbase_current/bin/hbase

我做错了什么?

当我根据" bash"的结果向bash脚本添加标题时,出现以下错误:

bash: ./file.sh: /bin/bash^M: bad interpreter: No such file or directory

该文件的内容如下:

#!/bin/bash
ENTITY="'A.B.C'"
HBASE_SHELL="/opt/hbase/hbase_current/bin/hbase"
FILE="A.B.C.txt"
/opt/hbase/hbase_current/bin/hbase
#echo "scan $ENTITY" | $HBASE_SHELL > $FILE

2 个答案:

答案 0 :(得分:2)

哦,你的行尾有DOS风格的CR / LF。您可以看到它们显示为^M

这样做:

tr -d '\r' < file.sh > newfile.sh
chmod +x newfile.sh
./newfile.sh

tr命令以-d开头,这意味着删除后面出现的所有内容,在这种情况下是表示回车的序列(CR )。

答案 1 :(得分:1)

您似乎已从Windows框中复制了该脚本。尝试在文件上使用dos2unix删除Windows行结尾:

$ dos2unix file.sh

sudo apt-get install dos2unix如果你没有它)