我在 shell 脚本中使用 elif 命令时遇到问题,就像在 fortran 中一样。
我有 100 家公司的员工名单。我想屏蔽那些员工少于 500 人的公司。我的脚本是
rm -f category_1.txt category_2.txt
var=company
for j in 1..100
do n=$(wc -l < $var_$j.txt)
if [ n -ge 500 ]; then
echo $var_$j >> category_1.txt
elif #I know it will not work
echo $var_$j >> category_2.txt
fi
done
我知道,我应该写“elif [ n -lt 500 ]; then”。但我想清楚“elif”是否可以像fortran一样使用?对于 Fortran,我们只写
if (n .ge. 500) then
write (1, *) company(j)
else
write (2,*) company(j)
endif
最佳答案
正确的 BASH 脚本应该是:
rm -f category_1.txt category_2.txt
var=company
for j in 1..100; do
n=$(wc -l < $var_$j.txt)
if [[ $n -ge 500 ]]; then
echo "${var}_${j}" >> category_1.txt
else
echo "${var}_${j}" >> category_2.txt
fi
done
- 与其使用旧样式
[ $n -ge 500 ]
不如使用更新的[[ $n -ge 500 ]]
。 - 无需使用
elif
,因为您只需要else
$i_$j
将无法正确解析,因为_
也被视为变量名的一部分,您需要使用${i}_$(j }
关于linux - 如何在 shell 脚本中编写 elif 命令,如 elseif 或在 fortran 中的 else 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425716/