The problem I have is that it's not looping over my_array
С этим:
declare -a my_array=$1
Вы создаете массив только с одним значением :$1
, первым аргументом, переданным вашему сценарию. Так что там особо не зацикливаешься.
Если вам нужны все аргументы, попробуйте:
declare -a my_array=$@
Вместо этого.
Если у вас есть клавиша >, вы можете попробовать:
dmesg > dmesg.txt
less dmesg.txt
Вариант 1:
Это не общая замена | но будет работать в некоторых случаях:
less <(dmesg)
Вариант 2 (требует \):
perl -e 'print "I=\"".chr(124)."\"\n"' >>.bashrc
Вариант 3:
perl -e 'print "I=".'"'"'"'"'"'.chr(124).'"'"'"'"'"'.'"'
'" >>.bashrc
Вариант 4 :Отредактируйте.bashrc и введите (, например. делаяcat >>.bashrc
):
I=$(perl -e 'print chr(124)')
Запустите новый bash, а затем вы можете запустить:
eval dmesg $I grep Linux $I less