我键入的代码与《 Linux命令行:完整介绍》(第369页)相同,但提示错误:
line 7 `if[ -e "$FILE" ]; then`
代码是这样的:
#!/bin/bash #test file exists FILE="1" if[ -e "$FILE" ]; then if[ -f "$FILE" ]; then echo :"$FILE is a regular file" fi if[ -d "$FILE" ]; then echo "$FILE is a directory" fi else echo "$FILE does not exit" exit 1 fi exit
我想了解是什么导致了错误?如何修改代码?我的系统是Ubuntu。
if和之间必须有一个空格[,如下所示:
if
[
#!/bin/bash #test file exists FILE="1" if [ -e "$FILE" ]; then if [ -f "$FILE" ]; then echo :"$FILE is a regular file" fi ...
这些(及其组合)也都是 不正确的 :
if [-e "$FILE" ]; then if [ -e"$FILE" ]; then if [ -e "$FILE"]; then
另一方面,这些都可以:
if [ -e "$FILE" ];then # no spaces around ; if [ -e "$FILE" ] ; then # 1 or more spaces are ok
顺便说一句,这些是等效的:
if [ -e "$FILE" ]; then if test -e "$FILE"; then
这些也等效:
if [ -e "$FILE" ]; then echo exists; fi [ -e "$FILE" ] && echo exists test -e "$FILE" && echo exists
而且,您的脚本的中间部分应该elif像这样更好:
elif
if [ -f "$FILE" ]; then echo $FILE is a regular file elif [ -d "$FILE" ]; then echo $FILE is a directory fi
(我也将引号中的引号删除了echo,因为在此示例中引号是不必要的)
echo