Вы путаете bash
с awk
массивами.
В вашем примере команда разбивает $INPUT
на массивawk
с именем a
.
Кроме того, вам нужно использовать BEGIN{...}
вместо {...}
, иначе awk
ожидает ввода, который вы не даете.
Попробуйте это,
awk 'BEGIN{split('$INPUT',a,""); for (k in a) print a[k]; }'
или лучше установите переменную с помощью -v
, чтобы избежать проблем с неправильным вводом.
awk -v "input=$INPUT" \
'BEGIN{split(input,a,""); for (k in a) print a[k]; }'
Выход::
6
5
7
8
2
3
Или просто сделать все вbash
:
for ((i=0;i<${#INPUT};i++)); do
echo ${INPUT:$i:1};
done
Один из способов — просто использовать чистое решение find.
find /path/to/file -type l -printf '%-40p --> %l\n
Просто удалите -40
или отрегулируйте требуемый выходной сигнал.
Попробуйте ввести команду readlink
.
напр. (адаптация команды поиска):
find -L /path/to/dir/ -xtype l -exec readlink {} \;
или, чтобы получить его какsource -> target
find -L. -xtype l -print0 | xargs -0 -I{} bash -c 'echo {} "->" "$(readlink {} )"'