Как выполнить сценарий.csh с аргументами командной строки из сценария.csh

Итак, у меня есть сценарий.csh generate.csh. Я хочу вызвать из него другой сценарий.csh. Я старался

./shell_gen.csh test1 test2.prt

Но он запускает shell_gen.csh, но без аргументов командной строки.

Кто-нибудь?

Спасибо

generate.csh

#!/bin/csh
./shell_gen.csh test1 test2.prt

shell_gen.csh

#!/bin/csh
set source = output
############################################################
# create pbm-gifs/ directory
############################################################
set destination1 = /scratch/graphics/$1gif
echo making $destination1

if ( ! -e $destination1 ) then
  mkdir $destination1
  foreach file ( $source/*.pgm )
    echo convert $file $destination1/$file:t:r.gif
    convert $file $destination1/$file:t:r.gif
end
else
echo "$destination1/ exists"
endif

2 ответа

Решение

Я бы сказал, что вам, вероятно, нужно поместить фигурные скобки вокруг переменной позиционного параметра, когда они объединяются с некоторыми другими символами:

set destination1 = /scratch/graphics/${1}gif

Но вам может понадобиться и точка там:

set destination1 = "/scratch/graphics/${1}.gif"

и цитаты защищают от пробелов.

$1gif не является ссылкой на позиционный параметр.

Вы пробовали ${1}gif, как предложил Деннис? Я думаю, что это должно работать.

ТАКЖЕ я нигде не вижу ссылки на $2, хотя ваш метод генерирует явно второй аргумент.

Наконец, первая строка, вероятно, должна быть #!/ Bin / csh -f

Лучший,
-pbr

Другие вопросы по тегам