我花了 2 个小时来处理 if
语句,但它从来没有像我想要的那样工作:
#should return true
if [ "$1" == "355258054414904" ]; then
这是整个脚本:
#!/bin/bash
param=$1
INPUT=simu_900_imei_user_pass.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT ime not found"; exit 99; }
while read imei email pass
do
echo "First Parameter-IMEI: $1"
if [ "$1" == "355258054414904" ]; then
echo "GOOD"
fi
done < $INPUT
IFS=$OLDIFS
这是脚本的输出:
First Parameter-IMEI: 355258054414904
First Parameter-IMEI: 355258054414904
First Parameter-IMEI: 355258054414904
我看过很多关于该主题的页面,但我无法使其发挥作用:(
编辑:我加入csv的内容以便更好地理解!谢谢您的帮助!
4790057be1803096,user1,pass1
355258054414904,juju,capp
4790057be1803096,user2,pass2
358854053154579,user3,pass3
最佳答案
$1 不匹配的原因是因为 $1 表示命令行上给脚本的第一个参数,而您希望它匹配从文件中读取的第一个字段。该值以 $imei 为单位。
您的意思可能是:
if [ "$imei" == "355258054414904" ]; then
echo "GOOD"
fi
因为它位于循环内部,您可以逐行读取输入文件。
要检查 $1
的内容,请使用:
cat -vet <<< "$1"
更新:要从 $1
中删除 \r
,请在顶部添加以下内容:
param=$(tr -d '\r' <<< "$1")
然后在脚本的其余部分使用“$param”
。
关于bash - 在 bash 中将 $1 与另一个字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940816/