#!/bin/bash
cd ~/workspace/trunk;
svn up;
当我在命令行中运行./build.sh
时,会显示以下信息:
: command not found
然而什么都没有发生。我该如何解决?
我解决了添加执行权限的问题:
sudo chmod +x file.sh
我已经解决了这个命令的错误。
sudo chmod +x build.sh
我猜测你的文件中可能存在不能打印的控制字符,或者它具有 \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
。 - KurzedMetal除了以下这个方法,以上的方法在我这里都不起作用。
sudo ./build.sh
去除脚本行末尾的 ;
符号。
在我的bash中没有这种情况,所以我不确定具体是什么问题,但我猜测可能是这样:
;
是命令的分隔符。由于您的最后一条命令以 ;
结尾,因此您的bash可能期望在之后再有另一条命令。然而,由于脚本已经完成,它读取了一个空命令,这是无法执行的。
<nothing>
-- 更可能的是,它试图执行 $'\r'
,这只是简单地 渲染 为无。 - Charles Duffy"
! - Shahbaz;
是无害的--你可以轻松地自行测试。只有DOS行结尾才会触发此错误。 - Charles Duffy