将$ 1与bash中的另一个字符串进行比较

时间:2014-02-21 17:13:14

标签: bash shell if-statement

我用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

2 个答案:

答案 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)

使用[您想使用单个'='符号来测试字符串相等。