这是我的代码:
#!/bin/bash if [ "$#" -ne 2 ] ; then echo "$0: exactly 2 arguments expected" exit 3 fi if [$1 != "file" -a $1 != 'dir'] ; then echo "$0: first argument must be string "file" or "dir"" exit 1 elif [-e $2 -a -r $2]; then if ["$1" = "file" -a -f $2] ; then echo YES elif ["$1" = "dir" -a -d $2] ; then echo YES else echo NO fi exit 0 else echo "$0: $2 is not a readable entry" exit 2 fi
如果我运行./lab4文件filename1,它将检查第一个参数是字符串“file”还是“dir”,如果第一个参数是“file”,filename1是一个文件,它将打印yes。相同的东西对于目录。
./lab04Q2: line 7: [file: command not found ./lab04Q2: line 10: [-e: command not found
即使我在运行程序时放置了2个参数。
在bash中尝试以下3行:
if [ "a" == "a" ]; then echo hi; fi if ["a" == "a" ]; then echo hi; fi if ["a" == "a"]; then echo hi; fi
你会看到只有第一个工作,而另外两个没有。那就是你缺乏空间是你的表达不行的原因。
上述示例还表明您可以直接在bash提示符下测试bash语法。您可以在将它们并入您的脚本之前获得它。