所以基本上我有一个练习,我必须显示文件 Students.csv 中的学生人数,并以城市作为参数,如下所示 猫学生.csv | ./ex_02.sh 西
它应该显示在 ny 的学生人数
我做到了。问题是,当我必须在没有参数的情况下执行脚本时,我只需要显示学生总数。这就是我出错的地方。
#!/bin/bash
if \[! "$1"\]
then
cat students.csv | wc -l
else
cat students.csv | grep -i $1 | wc -l
fi
然后,当我没有参数时,我会得到一个错误,当我有参数时,我会得到有参数的学生数量
bash 标签弹出窗口上的文本指示人们使用 shellcheck 测试他们的代码。在这种情况下,shellcheck 找不到错误。
bash
if
关键字后面应跟有要运行的命令。命令的退出值决定随后采用哪个分支。
问题中的代码指定该命令是
\[!
(扩展为单词 [!
)并且该命令应传递单个参数 "$1"\]
(扩展为包含 $1
扩展的单词,后跟右括号字符)。
您的系统上似乎没有名为
[!
的命令。因此 if
失败并且 else
分支始终被执行。
您可能打算使用
[
(又名 test
)命令。
它将给出:
if [ ! "$1" ]
# ...
请注意命令
[
及其每个参数的分隔 - 空格不是可选的。