bashで次のことを行うエレガントな方法があるかどうか疑問に思いました。
リストで特定の値を確認する必要があります。これを「1」と呼びましょう。この値を見つけたエントリごとに、一致する文字列(同じインデックスを持つ)を別のリストに蓄積し、最終的にそれを印刷する必要があります。
例:値のリストが"1 0 1 1 "
文字列のリストは"What a wonderful day"
したがって、出力文字列は次のようになります。"What wonderful day"
ありがとう
ここで私の提案された解決策:
#!/bin/sh
myMatch=1 #This is the value you're looking for
myString="What a wonderful day";
myList=( $myString ) #String to Array conversion
count=0;
for i in $@; do #Iterate over the input parameters
if [ $i -eq $myMatch ]; then
echo -n "${myList[$count]} " #use -n to avoid newline and append space as a separator
count=$(($count+1))
fi
done
したがって、値のリストを与えるスクリプトを呼び出します。
$ . myScript.sh 1 0 1 1
あなたは望んでいた結果を持っています。