[英]Nested for loop in unix shell script
我正在創建將首先滿足兩個條件的shell腳本,它將獲取所有文件名,並在html字段中一個接一個地插入其他for循環將獲取計數,並將其用於序列號的自動遞增。
我寫了這樣的代碼
cnt=`find /optware/oracle/logs/20190311_JAVA/TEMP/ -type f | wc -l`
for ((i in `ls -l /optware/oracle/logs/20190311_JAVA/TEMP/|grep -v ^$|awk '{print $9}` && a=1; a <= $cnt ; a++))
do
echo " <tr> $a <td></td><td>$i</td></tr>" >>Temp.lst
done
我收到錯誤,因為&& a = 1:算術語法錯誤
請幫我解決這個問題。
((...))
應該包含三個算術表達式。 in
不是算術運算符。 實際上,目前尚不清楚您要實現什么目標。
窩兩個循環,指定每個都擁有自己for
:
for i in `ls -l /optware/oracle/logs/20190311_JAVA/TEMP/|grep -v ^$|awk '{print $9}` ; do
for (( a = 1 ; a <= cnt ; a++ )) ; do
echo "$i:$a"
done
done
如果只需要一個計數器,則不需要第二個循環:
a=1;
for i in `ls -l /optware/oracle/logs/20190311_JAVA/TEMP/|grep -v ^$|awk '{print $9}` ; do
echo "$i:$a"
(( ++a ))
done
您不能直接在Bash中循環使用“索引+值”對。 我將編寫以下代碼:
index=0
for path in /optware/oracle/logs/20190311_JAVA/TEMP/*
do
echo " <tr>${index}<td></td><td>${path}</td></tr>" >> Temp.lst
((++index))
done
您正在混淆兩個循環結構 。 您可以使用任何一個,但不能同時使用。
for name [ [in [words …] ] ; ] do commands; done
和
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.