我正在尝试从shell脚本运行mount
命令。
我使用的代码如下:
echo mypassword | sudo -S mount -o loop system.img system
如果我将此代码直接写入终端,一切都很完美。但是当我在脚本中编写并从终端运行脚本时,会出现问题。我安装后,我在脚本中创建的目录获取system^M
。目录名称保留为system
但我可以通过写下来从终端访问它:
cd system^M/
由于这个问题,我无法运行我的after命令,导致他们找不到我的system
目录。
此外,当我运行scripti时,它会挂载img文件,但会显示错误消息,例如: not found
有谁知道,问题是什么?
答案 0 :(得分:1)
在大多数情况下,看起来您的脚本是使用DOS行终止符保存的(CRLF
,CR
在unix终端上打印为^M
。确保使用UNIX行终止符保存它。
答案 1 :(得分:1)
您的编辑器编写Windows(CR + LF)而非Unix(仅LF)换行符,有关详细信息,请参阅the newline article of Wikipedia。
答案 2 :(得分:1)
目录名不保持'为system
';通过执行
ls -b
看逃跑。
修复脚本的lineends:
dos2unix script.sh
# or
fromdos script.sh
使用vim,
vim script.sh +"se ff=unix|wq"