Я хочу прочитать у владельца список файлов, затем сравнить его с текущим владельцем и вывести ошибку, если это не то же самое.
У меня есть следующее, где я заменил сравнение простым эхом для простоты, поскольку это не сравнение идет не так:
while IFS=' ' read -ra own; do echo ${own[@]}; done <<< $(stat -c %U file*.*)
Статистика возвращает список строк (в данном случае 3 значения), все с моим именем пользователя в этом случае, но чтение просто выводит его как одно чтение и строку.
<myusername> <myusername> <myusername>
Уточнение: я имею в виду, что цикл обрабатывается только один раз, возвращая строку со всеми тремя значениями, тогда как мне нужны 3 итерации цикла, каждая из которых содержит одно значение.
Я изменил на IFS= и IFS='\t' на случай, если я каким-то образом неправильно истолковал вывод статистики, но я получаю такое же поведение, даже если я просто определяю строку типа «Я здесь» вместо статистики. команда, так что я, очевидно, делаю что-то еще не так.
О, мне это тоже нужно в однострочном выражении, так что если это проблема, то я думаю, что я немного облажался.
read -a
присваивает значения в массивеown
. Используя${own[@]}
, вы получаете все элементы массива в одной строке. Это правильное поведение... Чего именно вы ожидаете? - person oliv   schedule 16.04.2018