bash
変数を からに渡す方法に関するいくつかの質問を見つけましawk
た-v
。
スクリプトの外で、私が実行しているコマンドは
awk '$2 ~ /^\/var$/ { print $1 }' /etc/fstab
パーティションだけを検索/etc/fstab
し/var
、物理マウント ポイントを出力するか、存在しない場合は何も出力しません。
スクリプト内には、多数のパーティションを含む配列があり、その配列を繰り返し処理して、各物理マウント ポイントの fstab を検索します。問題は、配列内の要素に a が含まれているという事実にあり/
ます。
だから私がやりたいことは(恐ろしく間違ったawkで)次のとおりです。
PARTITIONS=(/usr /home /var tmp);
for ((n=0; n<${#PARTITION[@]}; n++)); do
cat /etc/fstab | awk '$2 ~ /^\${PARTITIONS[$n]}$/ { print $1 }';
done
しかし、それが正しくないことはわかっています。私が今持っている最も近いものは次のとおりです。
PARTITIONS=(/usr /home /var tmp);
for ((n=0; n<${#PARTITION[@]}; n++)); do
cat /etc/fstab | awk -v partition="${PARTITIONS[$n]}" '$2 ~ /^\/var$/ { print $1," ",partition }';
done
少なくとも、パーティション変数をawkに取得しますが、それを一致させるのにまったく役立ちません。
したがって、基本的には、配列をフィードして、物理パーティションを元に戻す必要があります。結果は最終的に別の配列に割り当てられますが、出力を取得したら、そこから移動できます。
また、最初は awk が猫の必要性を取り除くことができることも理解していますが、それを行うにはまだ awk について十分に知りません。:)
助けてくれてありがとう。
編集
cat /etc/fstab | awk -v partition="${PARTITIONS[$n]}" '$2 ~ partition { print $1 }'
有用であるために必要なものを概算します。どうやら正規表現を含めることに集中しすぎていたようです。他の誰かがこれをきれいにすることができれば、それは大歓迎です:)