LINUX.ORG.RU

проверка вхождения bash...


0

0

1. Пусть есть переменная $A с такими значениями
asd
fgh
jkl
qwe
rty
И есть переменная $B с каким то одним значением. Как проверить, входит ли знчение $B в $A, что то похожее на такое:
if [ $B IN $A]; then

2. Почти тоже самое, но переменная $B содержит несколько значений из $A, например
fgh
qwe
rty
И нужно узнать, каких значений нет в $B из $A.

Спасибо.

anonymous

я бы сказал так:

if { echo $A | grep "^$B\$" > /dev/null; }; then
    ...
fi

Но! держать в переменной много строк не только
неэстетично но и непортабельно.  Разделитель какой-то
другой лучше.

dilmah ★★★★★
()

Если строки делить пробелом, а не переводом строки,
можно использовать оператор сравнения '[[', в этом случае 
правый операнд рассмаривается как регулярное выражение.

1.
A='fgh jkl qwe rty'
B='fgh'
[[ " $A " == *" $B "* ]] && echo 'B входит в A'

2. Только циклом.
R=
for aa in $A ; do
   [[ " $B " == *" $aa "* ]] && j="$j $aa"
done
echo "Not in B: $j"

mky ★★★★★
()
Ответ на: комментарий от mky

> 2. Только циклом.

Ну, если кроме голого bash ещё чего-нибудь использовать...

join -v1 <(echo "$A") <(echo "$B")

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.