이 질문은 이전 질문에 대한 속편입니다 . 이 사이트의 사용자는 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 코드 |
는 일반적인 파이프와 같은 방식으로 왼쪽의 출력을 오른쪽으로 파이핑하는 것입니다.)