#bash #shell #unix #ksh
#bash #оболочка #unix #ksh
Вопрос:
я новичок в unix и shell script, поэтому проблема в части WHILE CASE, я запускаю скрипт примерно так
. SCRIPT1 123
вот script1
while [ $# -gt 0 ]
do
ParamLine="$ParamLine $1"
shift
done
$DIR/SCRIPT2$ParamLine
if [ $? -ne 0 ]
then
exit 1
fi
и вот SCRIPT2, который будет перехватывать параметр из SCRIPT1
from_prg=genresourceshortage
to_prg=genresourceshortage
batchdate=$BOM_BATCH_DATE
echo "THIS IS THE FIRST PARAMETER "$1
while [ $# -gt 0 ]
do
case $1 in
from=*) from_prg=`echo $1 | cut -c6-` ;;
to=*) to_prg=`echo $1 | cut -c4-` ;;
oc=*) to_prg=`echo $1 | cut -c4-` ;;
-d*) shift
batchdate=$1 ;;
*) echo "<<<<< Invalid restart parameter >>>>>"
echo "<<<<< Job Abandoned >>>>>"
exit 1 ;;
esac
shift
done
#THE CODE IS NOT REACHING THIS PART
rj $DIR/SCRIPT3from=$from_prg to=$to_prg -d $batchdate
как я могу получить значение из параметра, который я передал из SCRIPT1 в SCRIPT2? потому что я также буду использовать его в своем SCRIPT3.
Он отображает регистр по умолчанию, эту часть
echo "<<<<< Invalid restart parameter >>>>>"
echo "<<<<< Job Abandoned >>>>>"
Комментарии:
1. Это
$DIR/SCRIPT2$ParamLine
должно быть"$DIR/SCRIPT2" "$ParamLine"
, но лучший ответ — чепнера
Ответ №1:
Первый скрипт можно заменить одной строкой
"$DIR"/SCRIPT2 "$@"
Попытка свести аргументы к одной плоской строке неверна.
Комментарии:
1. Он работает с, . SCRIPT1 var= 1234. как можно ввести только значение, а не переменную?