bash 스크립트에서 “if”문에 조건부 “or”사용 for문자열 값을 반복

이 질문은 이전 질문에 대한 속편입니다 . 이 사이트의 사용자는 for문자열 값을 반복 하는 bash 루프 를 작성하는 방법을 결정하는 데 도움이되었습니다 . 예를 들어 루프 제어 변수 fname가 문자열을 반복 한다고 가정합니다 "a.txt" "b.txt" "c.txt". echo“예!”하고 싶습니다 때 fname값을가 "a.txt"하거나 "c.txt", 및 echo“아니오!” 그렇지 않으면. 다음 bash 쉘 스크립트를 시도했습니다.

#!/bin/bash

for fname in "a.txt" "b.txt" "c.txt"
do
 echo $fname
 if [ "$fname" = "a.txt" ] | [ "$fname" = "c.txt" ]; then
 echo "yes!"
else
 echo "no!"
fi
done

출력을 얻습니다.

a.txt

아니!

b.txt

아니!

c.txt

예!

왜 가치가 if있을 때 그 진술이 사실로 드러납 니까? 잘못 사용 했습니까 ?fname"a.txt"|



답변

당신이 말하고 싶은 경우 OR사용 : 파이프 ( ||).

if [ "$fname" = "a.txt" ] || [ "$fname" = "c.txt" ]

(원래의 OP 코드 |는 일반적인 파이프와 같은 방식으로 왼쪽의 출력을 오른쪽으로 파이핑하는 것입니다.)