두 개의 다른 값을 가진 두 개의 파일이 있습니다. 두 파일의 입력이 필요한 루프에서 명령을 실행하고 싶습니다. 간단하게 설명하기 위해 예를 들어 보겠습니다.
파일 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