2012-04-29 11 views
2

オプションリストから利用可能な最適なオプションを選択するシェルスクリプトをこれよりも丁寧に書くことができるかどうか不思議です。BASHを使用して最適なオプションを選択する

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

ああ、ここで誰かが通常巧妙な余分な何かを考え、その者が待ってそれが何であるかを見てみましょうことができます。しかし、あなたのやり方はきちんとしていると思います。 – thb

+1

私はそれをループさせることもできます: 'dt for" least wanted "in possible preferred; do [-d $ dt] && d = $ dt; done' – vibrog

+0

または 'dtのための可能な"可能性が最も低い "; do [-d $ dt] && d = $ dt && break; done' – vibrog

答えて

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'でループを短絡し、2回の反復を保存することができます。 –

+0

''優先ディレクトリ "" test_dir "の"可能なディレクトリ ""最低限必要なディレクトリ ";テストする-d "$ test_dir" ||持続する; dir = $ test_dir;ブレーク; done' – tripleee

+0

確かに、私は変数を使用し、できるだけ「goto」スタイルのステートメントを使用する方が好きです。別の答えとして投稿することができます。 – l0b0

関連する問題