无参数时如何显示学生人数

问题描述 投票:0回答:1

所以基本上我有一个练习,我必须显示文件 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
1个回答
0
投票

bash 标签弹出窗口上的文本指示人们使用 shellcheck 测试他们的代码。在这种情况下,shellcheck 找不到错误。

bash

if
关键字后面应跟有要运行的命令。命令的退出值决定随后采用哪个分支。

问题中的代码指定该命令是

\[!
(扩展为单词
[!
)并且该命令应传递单个参数
"$1"\]
(扩展为包含
$1
扩展的单词,后跟右括号字符)。

您的系统上似乎没有名为

[!
的命令。因此
if
失败并且
else
分支始终被执行。


您可能打算使用

[
(又名
test
)命令。

它将给出:

if [ ! "$1" ]
# ...

请注意命令

[
及其每个参数的分隔 - 空格不是可选的。

© www.soinside.com 2019 - 2024. All rights reserved.