2012-02-13 693 views
2

我试图从shell脚本运行mount命令。 我使用的代码如下:在shell脚本中运行mount命令

echo mypassword | sudo -S mount -o loop system.img system 

如果我直接写这段代码的终端,一切都是完美的。但是,当我在脚本中编写脚本并从终端运行脚本时,会发生问题。我在我的脚本中创建的目录在装载后获得system^M。目录名称保持原样system但我可以从终端通过写这篇访问它:因为这个问题我不能运行的

cd system^M/ 

我的命令后,因为他们找不到我system目录。 此外,当我运行脚本时,它会挂载img文件,但会显示错误消息,如: not found

有人知道,问题是什么?

+1

有一个机会,你的shell脚本保存CRLF行结束,而不是仅仅LF? – 2012-02-13 12:41:23

回答

1

看起来您的脚本正在使用DOS行终止符保存(大多数情况下,在unix终端上,CRLF,CR被打印为^M)。确保它是用UNIX行结束符保存的。

+0

我认为,但我找不到我该怎么办?现在它工作正常,谢谢。 – juliadream 2012-02-13 12:52:28

1

目录名没有留 'system';确认在做

ls -b 

看到逃生。

修复lineends您的脚本:

dos2unix script.sh 
# or 
fromdos script.sh 

使用vim,

vim script.sh +"se ff=unix|wq"