Расширение параметров оболочки на массивах
Скажем, я прочитал некоторые данные в массив Bash:
$ IFS=" " read -a arr <<< "hello/how are/you iam/fine/yeah"
Теперь я хочу напечатать первый/
поле для каждого элемента в массиве.
Что я делаю, так это перебираю элементы и использую расширение параметров оболочки, чтобы удалить все с первого/
:
$ for w in "${arr[@]}"; do echo "${w%%/*}"; done
hello
are
iam
Тем не менее, так какprintf
позволяет нам распечатать все содержимое массива в одном выражении:
$ printf "%s\n" "${arr[@]}"
hello/how
are/you
iam/fine
... интересно, есть ли способ использовать расширение параметра оболочки${w%%/*}
во время использованияprintf
вместо того, чтобы перебирать все элементы и делать это против каждого.