끈이 3개 있어요
A='apples'
B='bananas'
C='carrots'
fruit.txt
이 모든 것이 파일에 있는지 확인하고 싶습니다 . 가 누락된 경우 을 A
추가한 A
다음 B
을 추가하는 B
식으로 진행합니다.
이게 지금 내가 갖고 있는 거야
if grep -qF "$A | $B | $C" fruit.txt;
then echo 'exist'
else
echo 'does not exist'
echo $A $B $C >> fruit.txt
fi
답변1
수행하려는 작업에 대한 설명에는 루프에 대한 설명("문자열이 없으면 추가하고 모든 문자열에 대해 반복")이 포함됩니다.
루프에서 각 문자열의 존재 여부를 개별적으로 테스트한 다음 해당 문자열이 아직 파일에 없으면 추가할 수 있습니다.
fruits=( apples bananas carrots )
for fruit in "${fruits[@]}"; do
if grep -q -wF -e "$fruit" fruit.txt; then
printf '%s exists\n' "$fruit"
else
printf '%s does not exist\n' "$fruit"
printf '%s\n' "$fruit" >>fruit.txt
fi
done
여기서는 배열을 문자열로 사용하고 있습니다. $A
, $B
및 변수를 사용하려면 을 $C
사용하여 설정 fruits=( "$A" "$B" "$C" )
하거나 반복하십시오 for fruit in "$A" "$B" "$C"; do ...; done
.
답변2
귀하의 질문에 엄격하게 대답하려면 다음을 수행하십시오.
grep -lr $1 . | xargs -I{} grep -lr $2 {}
$1
그러면 AND가 포함된 파일이 검색됩니다 .$2