Как заменить конкретное значение аргумента в сценарии оболочки? - PullRequest
0 голосов
/ 26 марта 2020

Я запускаю сценарий оболочки, который является общим сценарием запуска для многих заданий. Он принимает 5-9 параметров. В некоторых случаях я получаю строку '/' в качестве аргумента, а в некоторых случаях я могу ее не получить.

Теперь, когда я получаю '/' в качестве параметра, его нужно заменить на 'usr/pwd@sid'. Я новичок в сценариях оболочки. Может кто-нибудь помочь мне, как проверить параметры и заменить параметр?

Например: startup_test.sh DEV filepath test.log sqlplus -S -L / @ sample_test.sql

Я сохраняю значения как $1,$2...$9 и затем запускаю sqlplus для запуска sql дано в аргументе.

Кроме того, поскольку это обычный скрипт, место, где "/" появляется в качестве аргумента, изменяется.

Я попытался использовать условие 'if', чтобы проверить каждый аргумент и заменить его на 'usr/pwd@sid' , Но это был длинный сценарий. Поэтому, пожалуйста, помогите мне с этим

1 Ответ

1 голос
/ 26 марта 2020

Вот краткий пример замены любого аргумента "/" на "usr / pwd@sid". Я не эксперт по оболочкам, так что это не супер аккуратно.

#!/bin/ksh
args=( "$@" )
for ((i=0; i < $#; i++)) ;do
  if [ "${args[$i]}" == "/" ]; then
    args[$i]="usr/pwd@sid"
  fi
done
set "${args[@]}"
# verify that it worked
echo "$0 $1 $2 $3 $4 $5"

Вывод:

$ ./test.sh a b c / d
./test.sh a b c usr/pwd@sid d
...