似乎无法在BASH中发现此错误,因为它存在语法错误

fra*_*lin 0 bash

在这里找不到错误.当我运行这个程序时,BASH出现了"[:17:意外的运算符"我用一个以.c结尾的参数和一个.java中的一个尝试了它但似乎都不起作用.

EXT=`echo $1 | cut -f2 -d"."`

if [ "$EXT" == "c" ]; then
    NAME=`echo $1 | cut -f1 -d"."`
    gcc -Wall -o "$NAME" "$1"   
elif [ "$EXT" == "java" ]; then
    NAME=`echo $1 | cut -f1 -d"."`
    gcj -c -g -O $1 && gcj --main="$NAME" -o "$NAME" "${NAME}.o"
else    
    echo "hm... I don't seem to know what to do with that"
fi
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 5

test(又名[)没有==经营者.=相反,字符串相等.是的,这有点奇怪.

此外,case对此很好:

case "$1" in
  *.java)
    # java stuff here
    ;;
  *.c)
    # c stuff here
    ;;
  *)
    # otherwise...
esac
Run Code Online (Sandbox Code Playgroud)

  • @franklin if和case之间的任何速度差异都会因调用`gcc`和`gcj`这样的外部命令而相形见绌.与分支新进程的外部命令相比,Shell内置命令如`if`,`case`和`echo`非常快. (2认同)