【发布时间】:2021-04-15 17:46:55
【问题描述】:
我正在读取 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
这是我的 csv 文件,对于 null 密码,null 不会被回显。
lm;Lukáš;Masák;kjfask
spilk;Lukáš;Rasák;56456
kour;Lukáš;drtič;
hole;Lukáš;March;
lmmama;Lukáš;March;
【问题讨论】:
-
请添加一个shebang,然后将您的脚本粘贴到shellcheck.net 并尝试实施那里提出的建议。
-
测试命令应该是
[ -z "$password" ]...在右括号丢失之前有一个空的espace。 -
shellcheck 在更改 if 后显示一切正常
-
文件的行尾可能有一些不可见/非打印的内容。是在DOS/Windows format 中吗(在这种情况下,unix 工具会将这些行视为末尾有非打印回车)?最后的“;”后是否有空格或制表符在那些线上?在脚本开头添加命令
set -x将在它执行时打印一个跟踪,这可能会阐明正在发生的事情。 -
当使用 set -x 时,它显示变量是 \r 但如果我将它与它进行比较它仍然不起作用