如何在shellif脚本中编写elif命令,如elseif或fortran中的命令

时间:2015-05-24 16:25:49

标签: linux bash shell if-statement

我在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

1 个答案:

答案 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}