ひもが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