2015-05-24 229 views
1

我正面臨在shell腳本中使用elif命令的問題,就像我在fortran中一樣。如何在shell腳本中編寫elif命令,如elseif或其他命令在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];然後」。但我想清楚「elif」是否可以像fortran一樣使用?在FORTRAN的情況下,我們只寫

if (n .ge. 500) then 
write (1, *) company(j) 
else 
write (2,*) company(j) 
endif 

回答

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}
+1

哦!然後我沒有正確理解它。感謝您的及時答覆@anubhava – Roselover