Вы инициализируете threshold
как индексированный массив ,
threshold=("2%" "6%")
Затем вы вызываете grep
с:
grep $threshold dffile
Так как threshold
массив, чтобы разыменовать все значения в массиве, вы используете форму:
${threshold[@]} ## which can be quoted to preserve whitespace in elements
Когда вы преобразуете массив как нормальную переменную, например, $threshold
, вы возвращаете только 1-й элемент, например,
echo $threshold ## output '2%'
Итак, прежде чем идти дальше, вам нужно определить, что вы хотите передать grep
, если вы хотите найти 2%
или 6%
, то у Аллана есть хорошее объяснение выше.Вы также можете создать выражение grep
, используя printf -v
, например,
printf -v gexp "%s\|%s" ${threshold[@]}
или, чтобы правильно ограничить первые 2 элемента,
printf -v gexp "%s\|%s" "${threshold[0]}" "${threshold[1]}"
и затем вызвать grep
с
grep "$gexp" dffile >> thresh
Дайте мне знать, если у вас есть дополнительные вопросы.