2つの異なる値を持つ2つのファイルがあります。両方のファイルの入力が必要なループでコマンドを実行したいと思います。簡単に説明するために例を挙げましょう。
ファイル1の内容:
google
yahoo
ファイル2の内容:
mail
messenger
次の出力が必要です
google is good in mail
yahoo is good in messenger
for / whileループを使用して同じ結果をどのように取得できますか?
以下を行うにはスクリプトが必要です。
$ File1はFile1の最初の結果を置き換える必要があり、$ File2はFile2の最初の結果を置き換える必要があります。
/usr/local/psa/bin/domain --ドメインの作成 $File1 -mail_service true -service-plan 'デフォルトドメイン' -ip 1.2.3.4 -login $File2 -passwd "abcghth"
答え1
-u
Bashの標準的な手順は、次のスイッチを使用して別のファイル記述子から読み取ることですread
。
while IFS= read -r -u3 l1 && IFS= read -r -u4 l2; do
printf '%s is good in %s\n' "$l1" "$l2"
done 3<file1 4<file2
答え2
While loop
可能ですが簡単な方法があります
paste File{1,2} -d% | sed 's/%/ is good in /'
-%
どんなシンボルでも可能
しかし、繰り返しに固執する場合は、提供されたループを使用できます。gniourf_gniourfまたはちょうど愚かな下線
mapfile -t A < File1
mapfile -t B < File2
if [ ${#A[*]} -lt ${#B[*]} ]
then
L=${#A[*]}
else
L=${#B[*]}
fi
n=-1
while [ $[++n] -lt $L ]
do
printf "%s is good in %s\n" "${A[$n]}" "${B[$n]}"
done