【发布时间】:2012-06-06 20:02:54
【问题描述】:
#!/bin/bash
cd ~/workspace/trunk;
svn up;
当我从命令行运行./build.sh 时,它会说:
: command not found
然后什么也没有发生。我该如何解决这个问题?
【问题讨论】:
#!/bin/bash
cd ~/workspace/trunk;
svn up;
当我从命令行运行./build.sh 时,它会说:
: command not found
然后什么也没有发生。我该如何解决这个问题?
【问题讨论】:
从脚本行的末尾删除 ;。
这不会发生在我的 bash 中,所以我不确定到底出了什么问题,但我的猜测是:
; 是命令的分隔符。由于您的最后一个命令以; 结尾,因此您的 bash 可能需要在之后执行另一个命令。但是,由于脚本完成,它会读取一个无法执行的空命令。
【讨论】:
; 之后出现一些东西。错误消息指示 <nothing>: command not found,这意味着他的 bash 实际上确实尝试执行 <nothing>!
<nothing>——更可能的是,它正在尝试执行$'\r',它只是呈现为空。
"!
;s 是无害的——您可以自己轻松地测试它。只有 DOS 行尾会触发此错误。
我的猜测是文件中有不可打印的控制字符,或者它有 \r\n (CRLF) 行结尾(dos/windows 模式)。
尝试使用以下命令进行检查:
$ hexdump -C build.sh
00000000 23 21 2f 62 69 6e 2f 62 61 73 68 0a 63 64 20 7e |#!/bin/bash.cd ~|
00000010 2f 77 6f 72 6b 73 70 61 63 65 2f 74 72 75 6e 6b |/workspace/trunk|
00000020 3b 0a 73 76 6e 20 75 70 3b 0a |;.svn up;.|
0000002a
$ file build.sh
build.sh: Bourne-Again shell script, ASCII text executable
$ unix2dos build.sh
unix2dos: converting file build.sh to DOS format ...
$ hexdump -C build.sh
00000000 23 21 2f 62 69 6e 2f 62 61 73 68 0d 0a 63 64 20 |#!/bin/bash..cd |
00000010 7e 2f 77 6f 72 6b 73 70 61 63 65 2f 74 72 75 6e |~/workspace/trun|
00000020 6b 3b 0d 0a 73 76 6e 20 75 70 3b 0d 0a |k;..svn up;..|
0000002d
$ file build.sh
build.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators
【讨论】:
build.sh
我解决了添加执行权限:
sudo chmod +x file.sh
【讨论】:
我已经通过这个命令解决了我的错误。
sudo chmod +x build.sh
【讨论】:
以上都对我有用,除了
sudo ./build.sh
【讨论】: