#!/bin/bash
cd ~/workspace/trunk;
svn up;
当我运行./build.sh
形式的命令行,它说:庆典SH - 找不到命令
: command not found
并没有任何反应。我该如何解决这个问题?
#!/bin/bash
cd ~/workspace/trunk;
svn up;
当我运行./build.sh
形式的命令行,它说:庆典SH - 找不到命令
: command not found
并没有任何反应。我该如何解决这个问题?
从脚本行末尾删除;
。
这并不在我的bash发生,所以我不知道究竟是错的,但我的猜测是这样的:
;
是命令的分隔符。由于您的最后一条命令在;
结束,因此您的bash可能会期待其他命令。但是,由于该脚本完成,它将读取一条空的命令,它不能执行。
我的猜测是你在文件中有无法打印的控制字符,或者它有\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
我敢打赌你5美元,它确实build.sh,但对biuld.sh例如:D – eis
我很喜欢OP的文件名:P是的,我敢打赌它是'建立.sh' – KurzedMetal
虽然分号是不必要的,它们实际上并不造成这里给出的问题 - 最糟糕的情况是,如果您有两个命令终止标记彼此相邻,则会出现语法错误。 –
@CharlesDuffy,可能。但是,我不知道OP使用什么bash。既然这个错误没有发生在我的bash中,我的猜测是他的版本是不同的,可能期望在';'之后出现。该错误消息表示':命令未找到,这意味着他的bash确实尝试执行''! –
Shahbaz
不一定是'' - 更可能的是,它试图执行'$'\ r'',它只是简单地表示为_renders_。 –