脚本中的命令不会运行,但在终端中会运行

脚本中的命令不会运行,但在终端中会运行

我的脚本如下:

#!/bin/sh

rm -rfv /home/user/Documents/Exercise/*

cp -rfv /home/user/Documents/ExerciseShare/ExerciseFiles/Word/Advanced/ /home/tp3/Documents/Exercise/

如果我通过终端单独运行这些命令,它们可以正常运行。我将它们放入脚本中(如上所述),当我尝试调整脚本时,终端窗口闪烁约一秒钟,什么也没发生。

我的解决方案尝试:

  1. 添加wait到脚本末尾 - 没有成功
  2. 右键单击脚本>属性>权限>执行-设置
  3. 尝试过,RunRun in Terminal没有成功

我正在使用 Ubuntu 12.10 64 位

答案1

经过几个小时的摸索,我找到了一个意想不到的答案。

我创建了一个新的空白文档,并仅添加了我想要的两行(没有 #!/bin/sh 的标题):

rm -rfv /home/user/Documents/Exercise/*
cp -rfv /home/user/Documents/ExerciseShare/ExerciseFiles/Word/Advanced/ /home/tp3/Documents/Exercise/

然后我保存了文档,右键单击>属性>权限>作为程序执行

答对了!

感谢所有提供帮助的人!

答案2

根据您的评论,您在 shebang 行末尾引入了一个额外的回车符 (\r)

/bin/sh^M: bad interpreter

如果您在 vim 中打开原始文件,您会看到该^M字符;您可以直接删除它。或者,您可以在 hexedit 等十六进制编辑器中打开它,您会看到一个额外的0D

Linux 换行符是单个换行符 (\n,0x0A),而 Windows 换行符则让人回想起打字机时代 (\r\n,0x0D 0x0A)。

相关内容