Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本读取值不符合比较条件_Bash_Csv_Syntax - Fatal编程技术网

Bash脚本读取值不符合比较条件

Bash脚本读取值不符合比较条件,bash,csv,syntax,Bash,Csv,Syntax,我正在读取csv文件并逐行回显 #!/bin/bash while IFS=";" read username first last password do echo "I got:$username $first $last $password" if [ -z "$password" ] then echo "null" fi done < users.csv 比较[“$password”=$'

我正在读取csv文件并逐行回显

#!/bin/bash 
while IFS=";" read username first last password
do
echo "I got:$username $first $last $password"
if [ -z "$password" ]
then
    echo "null"
fi
done < users.csv

比较
[“$password”=$'\r']
有效。谢谢你的
set-x

请添加一个shebang,然后将你的脚本粘贴到,并尝试实现那里提出的建议。测试代码应该是
[-z“$password”]
。。。结束括号前有一个空的电子空间丢失。shellcheck在更改括号后显示所有内容。如果文件中的行末尾可能有不可见/未打印的内容,请检查。是否处于这种状态(在这种情况下,unix工具会将行视为在末尾有非打印回车)?最后一行“;”后面有空格或制表符吗?在脚本开始处添加命令
set-x
,将在执行时打印一条跟踪,这可能会澄清发生了什么。使用set-x时,它表明变量是\r,但如果我将其与之比较,它仍然不起作用,我不推荐此解决方案。如果您得到的文件不是DOS/Windows格式,并且当前文件中的回车符(
\r
)也会出现在有密码的行上,则该测试将失败,并且可能会导致出现问题。与其绕着它转,不如把它移走。请参阅我链接的问题以获取可能的解决方案。您也可以在IFS=$时使用
\r'read…',然后让
read`命令为您修剪它。
lm;Lukáš;Masák;kjfask
spilk;Lukáš;Rasák;56456
kour;Lukáš;drtič;
hole;Lukáš;March;
lmmama;Lukáš;March;