2012-06-01 41 views
1

我有一個csh腳本,我的目標是用perl模塊Config :: Simple讀取ini配置文件。我想執行我的perl命令並將結果賦給一個變量。將變量從perl分配給csh

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

什麼是語法?

+0

我正在處理別人的腳本......但是你是對的,這是自Phil-H解答以來的最佳解決方案。謝謝。 – user1254498

回答

2

將腳本的返回值接收到變量中?我續知道CSH語法,但在bash是:

myvar=`perl ....`; 

但是,如果你想設置幾個變量,不知道。

1

若要設置幾個變量,您可以使用shell將評估的perl腳本print csh語法。

我不知道,但CSH在bash它應該像csh

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

命令替換完成如下:

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

而且,順便說一句,我希望你使用csh的後代,如tcsh。原始的csh實施是一個腦死的炮彈。這個經典的paper描述了爲什麼。

0

我有一個類似的要求,我用python而不是perl。 我的python腳本正在生成3個輸出字符串,並且需要將值設置爲csh作爲變量。

這是一個解決方案..希望它會有所幫助!

內的Python:

我用三個變量:X,Y和Z我在蟒蛇僅 一個print語句打印了:X,Y,Z

內部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}'`