我在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
我知道,我应该写&#34; elif [n -lt 500];然后&#34 ;.但我想清楚是否&#34; elif&#34;可以像fortran一样使用吗?在fortran的情况下,我们只写
if (n .ge. 500) then
write (1, *) company(j)
else
write (2,*) company(j)
endif
答案 0 :(得分:1)
正确的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}