我用if
语句花了2个小时,这句话永远不会像我想要的那样:
#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的内容以便更好地理解! Tx求助!
4790057be1803096,user1,pass1
355258054414904,juju,capp
4790057be1803096,user2,pass2
358854053154579,user3,pass3
答案 0 :(得分:2)
$ 1不匹配的原因是因为$ 1表示在命令行上给脚本的第一个参数,而您希望它匹配从文件读取的第一个字段。那个价值在$ imei。
你可能意味着:
if [ "$imei" == "355258054414904" ]; then
echo "GOOD"
fi
因为它在循环内部逐行读取输入文件。
检查$1
使用内容:
cat -vet <<< "$1"
更新要从\r
中剥离$1
,请将其放在首位:
param=$(tr -d '\r' <<< "$1")
然后在脚本的其余部分使用"$param"
。
答案 1 :(得分:-1)
使用[您想使用单个'='符号来测试字符串相等。