gpt4 book ai didi

linux - 意外标记附近的语法错误 'then'

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:37 25 4
gpt4 key购买 nike

我输入的代码与 The Linux Command Line: A Complete Introduction 相同, 第 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[之间必须有一个空格,像这样:

#!/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,脚本的中间部分会更好:

if [ -f "$FILE" ]; then
echo $FILE is a regular file
elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi

(我还在 echo 中删除了引号,因为在这个例子中它们是不必要的)

关于linux - 意外标记附近的语法错误 'then',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com