gpt4 book ai didi

bash 错误 : syntax error: operand expected (error token is ")

转载 作者:行者123 更新时间:2023-11-29 09:46:30 26 4
gpt4 key购买 nike

我是 bash 脚本的新手,我的一个脚本有问题。在从充满 XML 文件的文件夹中读取他们的生日并计算他们的年龄后,我试图编写一份 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 个文件名然后停止。为什么会发生这种情况的任何想法?

最佳答案

您需要引用 $BIRTH_DATE 的扩展,以防止在值中的空白处进行分词。 (最好引用所有你的参数扩展,除非你有充分的理由不这样做,因为这个原因。)

DIFFERENCE=$(( ( $(gdate -ud "$CURRENT_DATE" +'%s') - $(gdate -ud "$BIRTH_DATE" +'%s') )/60/60/24 ))

(根据您的评论,这可能至少允许 gdate 为您提供更好的错误消息。)

关于 bash 错误 : syntax error: operand expected (error token is "),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38998479/

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