for / whileループに入力された2つのファイルを解析します。

for / whileループに入力された2つのファイルを解析します。

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

-uBashの標準的な手順は、次のスイッチを使用して別のファイル記述子から読み取ることです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

関連情報