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

标签 bash shell if-statement

我花了 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/

相关文章:

php - 出错而不是使用 SSH 请求密码

node.js - 从命令行向 Node.js 脚本发送字符串和回车键

c - 如何编写一个评估 shell 命令的 c 程序

linux - BASH - 如何使用 sed 从网站中提取 URL

python - 将多个 if 和 elif 语句应用于 for 循环中字符串列表中的子字符串

algorithm - 评估排列的最佳实践

bash - 当 Perl 嵌入到 shell 脚本中时,如何查看父脚本中用实际行号报告的语法错误?

bash - 删除 Bash 中无效的非 ASCII 字符

linux - 通过 cronjob 中的 bash 脚本进行 sftp : 'get' and 'rm' commands not found?

if-statement - Cassandra CQL - 如果不等于则更新(插入)