当前位置: 首页 > 面试题库 >

意外令牌'then'附近的语法错误

邓驰
2023-03-14
问题内容

我键入的代码与《
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和之间必须有一个空格[,如下所示:

#!/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,因为在此示例中引号是不必要的)



 类似资料:
  • 问题内容: 我在Mac上写了一个示例脚本 通过显示Example可以正常工作 当我在RedHat机器上运行此脚本时,它说 意外令牌附近的语法错误’ 我检查了bash是否可用 有人遇到过同样的问题吗? 提前致谢 ! 问题答案: 这可能是文件编码问题。 在不同操作系统和编辑器之间处理文件时遇到了文件类型编码问题,在我的情况下,尤其是在Linux和Windows系统之间。 我建议检查文件的编码,以确保它

  • 问题内容: 问题答案: 您要在UNIX命令提示符下键入此命令吗?您应该在python环境中执行此操作,即。在提示符下键入,然后从那里开始。 另外,在Python行的末尾不需要

  • 我正在使用一种新的语言,我想它是linux,但老实说,我不知道;我们通过一个名为putty的程序连接到某个服务器来进行编程。作为作业的一部分,我必须创建一个计算器程序,以两个数字和一个运算符作为分段,但我得到了一堆意想不到的令牌错误。我很迷茫,我的课文和我的教授都没有帮助 到目前为止,我只是想得到它,这样我就可以从命令中得到2/calc.sh 1 1但我在第20行中不断遇到意外的标记错误

  • 对问题可能是什么的任何想法? 我的代码是: 将其保存为.sh并运行bash file.sh CentOS 6 32位 问题是什么?第一次使用BASH时,需要它来进行简单的无限循环。

  • 问题内容: 我正在尝试与Jenkins构建过程一起运行以下Shell命令 现在构建失败 但是奇怪的是,当直接在Jenkin从站上运行此命令时,它可以正常工作。 如您所见,Jenkins也运行shell命令 。 任何帮助将不胜感激,因为我努力了几个小时 问题答案: 是由启用的扩展模式。目前尚不清楚如何在您的Jenkins从站中启用它,但是将命令添加到脚本中应该可以解决您的问题。

  • 在My Gulpfile.js错误部分: 我的包裹。json: 我运行并得到以下错误。 在终端屏幕中: gulp.task('webpack',gulp.series(async()=