2012-04-29 19 views
2

我很好奇,是否可以用比這更簡潔的方式編寫一個shell腳本以從選項列表中選擇最佳可用選項?使用BASH選擇最佳可用選項

d="least wanted directory" 
dt="possible directory" && [ -d $dt ] && d=$dt 
dt="preferred directory" && [ -d $dt ] && d=$dt 
+0

哦,有人在這裏經常可以想出巧妙的額外的東西,讓我們拭目以待那是什麼。不過,我認爲你的方式很整潔。 – thb 2012-04-29 11:03:33

+1

我也可以做一個循環:'對於dt最不想要的「可能首選;做[-d $ dt] && d = $ dt;完成' – vibrog 2012-04-29 11:46:38

+0

或'dt爲最佳可能「最不想要的」;做[-d $ dt] && d = $ dt && break;完成' – vibrog 2012-04-29 12:17:45

回答

1

可讀的版本(高效感謝@CodeGnome):

dirs=("preferred directory" "possible directory" "least wanted directory") 

for test_dir in "${dirs[@]}" 
do 
    if [ -d "$test_dir" ] 
    then 
     dir="$test_dir" 
     break 
    fi 
done 
echo "$dir" 
+1

如果反轉目錄的順序以便優先選擇第一個,則可以在分配給* dir *之後用'break'將循環短路並保存幾次迭代。 – 2012-05-15 00:47:44

+0

'for test_dir in「首選目錄」「可能的目錄」「最不想要的目錄」;測試-d「$ test_dir」||繼續; DIR = $ test_dir;打破; done' – tripleee 2012-05-15 10:09:25

+0

好的,但我更喜歡使用一個變量,儘可能少地使用「goto」風格的語句。您可以將其作爲單獨的答案發布。 – l0b0 2012-05-15 11:30:53