为什么'if [$#> 0]错了; 然后'?

sch*_*acs 2 bash ubuntu sh

为什么它仍然在第三个命令中产生输出?

$cat sh.sh
#!/bin/sh
echo $#
if [ $# > 0 ] ; then
    base=`basename $1 .c`
    echo $base
fi
$ sh sh.sh a.c
1
a
$ sh sh.sh
0
.c
Run Code Online (Sandbox Code Playgroud)

我使用这个文件:/usr/share/doc/opencv-doc/examples/c/build_all.sh来构建opencv软件包的c示例,但是失败并出现类似的错误.

cod*_*ict 7

你需要用来-gt代替>.

>如果使用双括号构造,则可以使用.