Изучаю bash программирование, столкнулся с вопросом как передать параметры скрипта в массив
#!/bin/bash
if [ $# == 0 ]
then
echo "введите количество параметров (от 1 до 5)"
read par
for i in $(seq 1 $par)
do
echo ведите значения
echo param$i=
read p
mass[$i]=$p
done
echo ${mass[1]}
else
par=$#
for i in $(seq 1 $par)
do
mass[$i]=$$i # передать в этот массив
done
echo ${mass[1]}
fi
Передать параметры скрипта в массив
array=( бакс@ )
Не?
Изучаю bash программирование, столкнулся с вопросом как передать параметры скрипта в массив
вы можете оформлять код как код, а не как быдлокод? :[
в последний раз оформляю за вас (ошибка исправлена) :
#!/bin/bash
if [ $# == 0 ]
then
echo "введите количество параметров (от 1 до 5)"
read par
for i in $(seq 1 $par)
do
echo ведите значения
echo param$i=
read p
mass[$i]=$p
done
echo ${mass[1]}
else
par=$#
for i in $(seq 1 $par)
do
mass[$i]=$1 # передать в этот массив
shift
done
echo ${mass[1]}
fi
echo ${mass[@]}
и да, $$ в скрипте - это PID самого скрипта, а не то, что вы подумали.
в догонку, тогда уж не $$i, а ${$i}, только я-бы не стал такое в продакшен пихать, даже если оно и работает...
Избегаем оверпостинга, есть кнопка "изменить"
${$i} не работает пробовал так, работает как предложено выше с shift. Спасибо!
Избегаем оверпостинга, есть кнопка "изменить"
модатор, я с мобилы писал. там невозможно отредактировать.
${$i} не работает пробовал так, работает как предложено выше с shift. Спасибо!
всегда пожалуйста.
на всякий случай, пока комп под рукой. так - не работает:
[console]doc@dt:~$ echo $0
bash
doc@dt:~$ x=0
doc@dt:~$ echo ${$x}
bash: ${$x}: bad substitution
doc@dt:~$ echo ${${x}}
bash: ${${x}}: bad substitution
[/console]
но можно сделать и так:
[console]doc@dt:~$ s="echo \$$x"
doc@dt:~$ echo $s
echo $0
doc@dt:~$ eval $s
bash
[/console]
как обычно:
WARNING!!!
только для профессиональных каскадёров, не пытайтесь повторить!