我是Bash腳本編程的新手,儘管多次嘗試重構下面僞代碼中顯示的邏輯結構,我無法獲得此工作。我如何將if/else邏輯與for循環一起分開?Bash腳本 - for循環和if-else
僞代碼: 我有一個命令,用於檢查HDFS文件系統目錄中是否存在任何子文件夾。讓我們調用這個command_A。
If subfolders do NOT exist {
proceed with remaining execution of script
}
Else {
sleep for 30 minutes and run command_A again to see if the subfolders have been removed. Note: This sleep and re-check cycle should repeat up to 4 times and if subfolders are never removed the script is killed with exit 1
}
我試過的樣品在下面。我無法弄清楚我應該如何使用||結合else語句。
使用這些結構:
1. for i in {1..4}; do command_A && break || sleep 1800; done
2. if command_A ; then echo "Command succeeded" else echo "Command failed" fi
試驗例:
for i in {1..4};
do
if hdfs dfs -test -e $mypath/*
echo "Folder is empty" && break
else
???
更新表示工作溶液:
for i in {1..4};
do
if hdfs dfs -test -e $mypath/*;
then
if [ $i -eq 4 ]
then
echo "script exiting now with code 1"
else
echo "Folder is full"
sleep 10
fi
else
echo "Folder is empty"
break
fi
done
爲什麼你需要'爲我在{1..4};'爲?您沒有在任何地方使用'i' – Inian
@Inian我需要重複檢查文件夾在2小時內總共被刪除4次的循環。如果他們從未被刪除,那麼我會退出腳本,因爲我不希望它無限期地運行。 – HendPro12
那麼,只是爲了瞭解什麼是不在這裏工作?或者你錯過了什麼? – Inian