我收到错误:第34行:#10#1001:语法错误:预期的操作数(错误标记为“#10#1001”)
我刚刚改变了
[! -f INPUT ] &
到
[ ! -f INPUT ] &&
现在我收到了错误
line 34: #10#1001: syntax error: operand expected (error token is "#10#1001")
当我运行脚本时。
该脚本输入用户名,电话号码和dob,然后对信息进行排序并计算其年龄。
可能导致此错误的原因是我无法确定它要求的操作数
#!/bin/bash
a=0
while [ $a -lt 2 ];
do
echo Please enter a first name
read firstName
echo Please enter last name
read lastName
echo Please enter phone number
read phoneNumber
echo Please enter date of birth - format dd/mm/yyyy
read dob
echo "$firstName,$lastName,$phoneNumber,$dob" >> userBirthdays.csv
echo If you would like to add another person press 1 or enter 2 to proceed
read a
done
INPUT=./userBirthdays.csv
OLDIFS=$IFS
IFS=","
[ ! -f INPUT ] && while read while read Name Surname Telephone DOB
do
birthMonth=${DOB:0:2}
birthDay=#10${DOB:3:2}
birthYear=${DOB:6:4}
currentDate=`date +%d/%m/%Y`
currentMonth=${currenDate:0:2}
currentDay=#10${currentDate:3:2}
currentYear=${currentDate:6:4}
if [[ "$currentMonth" -lt "$birthMonth" ]] || [[ "$currentMonth" -eq "$birthMonth" && "$((#10$currentDay))" -lt "$((#10$birthDay))" ]]
then
let Age=currentYear-birthYear-1
else
let Age=currentYear-birthYear
fi
echo "Name : $Name"
echo "Surname : $Surname"
echo "Telephone : $Telephone"
echo "DOB : $DOB"
echo "Age : $Age"
echo "##########################################"
done < $INPUT
IFS=$OLDIFS
echo $DATE
exit 0;
答案 0 :(得分:2)
这一行你有两个错误:
[ ! -f INPUT ] && while read while read Name Surname Telephone DOB
应该是:
[ -f ${INPUT} ] && while read Name Surname Telephone DOB
我建议使用debugging脚本:
bash -x /path/to/birthdays.bash
这将在执行每个命令之前打印命令跟踪。
答案 1 :(得分:1)
-lt
比较(和朋友)是整数,而不是字符串。然后将currendDay
转换为非整数字符串,方法是将#10
添加到其中(顺便说一下,这样做两次)。
你的意图不是很清楚。你想比较字符串吗?然后使用<
代替-lt
。你想currentDay
是一个数字吗?然后不要将#10
添加到其值(在这两个地方你现在都这样做)。