2012-06-01 2 views
1

У меня есть сценарий csh, моя цель - прочитать конфигурационный файл ini с perl-модулем Config :: Simple. Я хочу выполнить команду perl и присвоить результат одной переменной.Назначить переменную от perl до csh

perl -MConfig::Simple -e '$cfg = new Config::Simple("../config.ini"); $myvar = $cfg->param("myvar");' 

Что такое синтаксис?

+0

Я работаю над другими сценариями ... Но вы правы, это лучшее решение, так как ответ Фил-Н работает. Благодарю. – user1254498

ответ

2

Получите возвращаемое значение сценария в переменную? Я con't знаю CSH синтаксис, но в Баш что:

myvar=`perl ....`; 

Но если вы хотите установить несколько переменных, не уверен.

1

Для установки нескольких переменных у вас может быть сценарий perl print синтаксис csh, который будет оценивать оболочка.

Я не знаю CSH, но в Баш это должно быть сделано, как

#!/bin/sh 
eval `perl -E 'say "FOO=123"; say "BAR=456"'` 
echo "FOO is $FOO" 
1

подстановки команд в csh выглядит следующим образом:

#!/bin/csh 
set VAR=`perl -E 'say q(hello world)'` 
echo ${VAR} 

И, как в сторону, я надеюсь, что вы используете потомком csh, как tcsh. Первоначальная реализация csh - это убитая мозгом оболочка. Этот классический paper описывает, почему.

0

У меня было аналогичное требование, где я использовал python вместо perl. В моем скрипте python было создано 3 строки вывода, и значения должны были быть установлены в csh как переменная.

Вот решение .. надеемся, что это поможет!

Внутри Python:

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

Внутри CSH:

set py_opt = `./my_python_script` 
set csh_x = `echo $py_opt | sed 's/,/ /g' | awk '{print $1}'` 
set csh_y = `echo $py_opt | sed 's/,/ /g' | awk '{print $2}'` 
set csh_z = `echo $py_opt | sed 's/,/ /g' | awk '{print $3}'` 
Смежные вопросы