解析 for/while 循环中输入的两个文件

解析 for/while 循环中输入的两个文件

我有两个具有两个不同值的文件。我想在循环中运行一个命令,该命令需要来自两个文件的输入。让我举个例子来简单起见。

文件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

相关内容