У меня есть две переменные, оба представляют собой список имен файлов, которые были перемещены скриптом.Bash: проверить, существует ли переменная в пределах другой переменной?
Переменная 1: Сгенерировано контуром «чтения» большей переменной. В любой момент он содержит только одно имя файла.
var1 = pic1.jpg
var1 = pic2 duplicate.jpg
var1 = pic3 (DUP) .jpg
var1 = pic4.jpg
var1 = подкаталог/в подпапке picture.png
Как показано выше, имена файлов могут содержат пробелы, но не всегда.
Variable 2: Строка, содержащая список файлов, каждое имя файла разделяется символом новой строки \n
.
var2 = pic1.jpg
\n
pic2 duplicate.jpg\n
pic3 (DUP) .jpg\n
pic4.jpg
Я пытаюсь проверить, если содержимое var1 можно найти в var2:
listcontains() {
for list_item in $1; do
# Does $list_item exist in $2?
if [[ "$list_item" =~ "$2" ]]; then
return 0
else
return "1"
fi
done
}
# Call function to see if var1 is in var2
if listcontains "$var1" "$var2"
then
# var1 is in var2; do stuff...
else
# Do different stuff...
fi
Эта логика явно не так, или синтаксис является неправильным, так как он всегда возвращает не MATC ч на данный момент:
does pic2 exist in pic2 duplicate.jpg
pic2.jpg
pic3(dup).jpg
pic3.jpg?
no
does pic3(dup).jpg exist in pic2 duplicate.jpg
pic2.jpg
pic3(dup).jpg
pic3.jpg?
no
Я все еще учусь Баш, так что если кто-нибудь может мне помочь, то это было бы массово оценили.
Вы верны!Я переключил аргументы на стороне теста и зафиксировал его на ожидаемом выходе. Элементы являются полными именами файлов. –