BASH错误:语法错误:预期的操作数(错误令牌为“”)

kbdev

我是bash脚本的新手,我的一个脚本有问题。在从充满XML文件的文件夹中读取25岁以下的驱动程序的生日并计算其年龄之后,我试图组成一个25岁以下驱动程序的列表。一旦确定它们小于25,就将驱动程序数据的文件名保存到文本文件中。该脚本一直工作到一定程度,然后停止。我得到的错误是:

gdate: extra operand ‘+%s’
Try 'gdate --help' for more information.
DriversUnder25.sh: line 24: ( 1471392000 -  )/60/60/24 : syntax error: operand expected (error token is ")/60/60/24 ")

这是我的代码:

#!/bin/bash

# define directory to search and current date
DIRECTORY="/*.xml"
CURRENT_DATE=$(date '+%Y%m%d')

# loop over files in a directory
for FILE in $DIRECTORY;
do
  # grab user's birth date from XML file
  BIRTH_DATE=$(sed -n '/Birthdate/{s/.*<Birthdate>//;s/<\/Birthdate.*//;p;}' $FILE)

  # calculate the difference between the current date
  # and the user's birth date (seconds)
  DIFFERENCE=$(( ( $(gdate -ud $CURRENT_DATE +'%s') - $(gdate -ud $BIRTH_DATE +'%s') )/60/60/24 ))

  # calculate the number of years between
  # the current date and the user's birth date
  YEARS=$(($DIFFERENCE / 365))

  # if the user is under 25
  if [ "$YEARS" -le 25 ]; then
    # save file name only
    FILENAME=`basename $FILE`
    # output filename to text file
    echo $FILENAME >> DriversUnder25.txt
  fi
done

我不确定为什么它会正确输出前10个文件名然后停止。任何想法为什么会发生这种情况?

kbdev

问题是某些文件中有多个驱动程序,因此将多个出生日期导入到同一字符串中。我的解决方案如下:

#!/bin/bash

# define directory to search and current date
DIRECTORY="/*.xml"
CURRENT_DATE=$(date '+%Y%m%d')

# loop over files in a directory
for FILE in $DIRECTORY;
do
  # set flag for output to false initially
  FLAG=false

  # grab user's birth date from XML file
  BIRTH_DATE=$(sed -n '/Birthdate/{s/.*<Birthdate>//;s/<\/Birthdate.*//;p;}' $FILE)

  # loop through birth dates in file (there can be multiple drivers)
  for BIRTHDAY in $BIRTH_DATE;
  do
    # calculate the difference between the current date
    # and the user's birth date (seconds)
    DIFFERENCE=$(( ( $(gdate -ud $CURRENT_DATE +'%s') - $(gdate -ud $BIRTHDAY +'%s') )/60/60/24))

    # calculate the number of years between
    # the current date and the user's birth date
    YEARS=$(($DIFFERENCE / 365))

    # if the user is under 25
    if [ "$YEARS" -le 25 ]; then
      # save file name only
      FILENAME=`basename $FILE`
      # set flag to true (driver is under 25 years of age)
      FLAG=true
    fi
  done

  # if there is a driver under 25 in the file
  if $FLAG == true; then
    # output filename to text file
    echo $FILENAME >> DriversUnder25.txt
  fi
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash脚本错误:“语法错误:预期的操作数(错误令牌为“ / backup”)”

来自分类Dev

Bash脚本错误:“语法错误:预期的操作数(错误令牌为“ / backup”)”

来自分类Dev

bash 语法错误预期操作数

来自分类Dev

Bash错误“语法错误:预期的操作数”,但操作数已存在

来自分类Dev

语法错误:预期的操作数(错误标记为“”)

来自分类Dev

语法错误:预期的操作数(错误标记为“ +”)

来自分类Dev

语法错误:预期操作数(错误标记为“/”)

来自分类Dev

语法错误:预期操作数(错误标记为“<”)

来自分类Dev

bash脚本错误let:-:语法错误:预期的操作数(错误标记为“-”)

来自分类Dev

在Shell中,字符串中的点导致-eq操作失败,并显示以下错误:语法错误:预期的操作数(错误令牌为“ \ .test”)

来自分类Dev

bash: 369-1: 语法错误:预期操作数(错误标记为“369-1”)

来自分类Dev

无法解决语法错误:预期的操作数(错误标记为“ +”)

来自分类Dev

第4行:5 +:语法错误:预期操作数(错误标记为“ +”)

来自分类Dev

使用 if/then 语句的问题:`((: == : 语法错误:预期操作数(错误标记为“==”)`

来自分类Dev

操作数应包含1列或语法错误

来自分类Dev

操作数应包含1列或语法错误

来自分类Dev

预期的操作数(错误令牌为“-”)和歧义重定向

来自分类Dev

令牌“-”的语法错误,-预期

来自分类Dev

令牌“;”的语法错误,预期

来自分类Dev

语法操作数的Bash脚本错误应为“ =”

来自分类Dev

令牌“ in”上的Textillate插件语法错误,预期为IntegerLiteral

来自分类Dev

bash语法错误(“ <”中的令牌错误)

来自分类Dev

-令牌“ .8”的语法错误。预期的

来自分类Dev

语法错误:运算符'='之前缺少操作数

来自分类Dev

随机语法错误!使用包含“操作数”的键进行关联数组扩展

来自分类Dev

dataview.rowfilter语法错误-缺少操作数之谜

来自分类Dev

语法错误:运算符'='之前缺少操作数

来自分类Dev

语法错误:“学生”运算符后缺少操作数

来自分类Dev

PostgreSQL-json操作数上的无法解释的语法错误

Related 相关文章

  1. 1

    Bash脚本错误:“语法错误:预期的操作数(错误令牌为“ / backup”)”

  2. 2

    Bash脚本错误:“语法错误:预期的操作数(错误令牌为“ / backup”)”

  3. 3

    bash 语法错误预期操作数

  4. 4

    Bash错误“语法错误:预期的操作数”,但操作数已存在

  5. 5

    语法错误:预期的操作数(错误标记为“”)

  6. 6

    语法错误:预期的操作数(错误标记为“ +”)

  7. 7

    语法错误:预期操作数(错误标记为“/”)

  8. 8

    语法错误:预期操作数(错误标记为“<”)

  9. 9

    bash脚本错误let:-:语法错误:预期的操作数(错误标记为“-”)

  10. 10

    在Shell中,字符串中的点导致-eq操作失败,并显示以下错误:语法错误:预期的操作数(错误令牌为“ \ .test”)

  11. 11

    bash: 369-1: 语法错误:预期操作数(错误标记为“369-1”)

  12. 12

    无法解决语法错误:预期的操作数(错误标记为“ +”)

  13. 13

    第4行:5 +:语法错误:预期操作数(错误标记为“ +”)

  14. 14

    使用 if/then 语句的问题:`((: == : 语法错误:预期操作数(错误标记为“==”)`

  15. 15

    操作数应包含1列或语法错误

  16. 16

    操作数应包含1列或语法错误

  17. 17

    预期的操作数(错误令牌为“-”)和歧义重定向

  18. 18

    令牌“-”的语法错误,-预期

  19. 19

    令牌“;”的语法错误,预期

  20. 20

    语法操作数的Bash脚本错误应为“ =”

  21. 21

    令牌“ in”上的Textillate插件语法错误,预期为IntegerLiteral

  22. 22

    bash语法错误(“ <”中的令牌错误)

  23. 23

    -令牌“ .8”的语法错误。预期的

  24. 24

    语法错误:运算符'='之前缺少操作数

  25. 25

    随机语法错误!使用包含“操作数”的键进行关联数组扩展

  26. 26

    dataview.rowfilter语法错误-缺少操作数之谜

  27. 27

    语法错误:运算符'='之前缺少操作数

  28. 28

    语法错误:“学生”运算符后缺少操作数

  29. 29

    PostgreSQL-json操作数上的无法解释的语法错误

热门标签

归档