1

我有一个 csh 脚本,我的目标是使用 perl 模块 Config::Simple 读取一个 ini 配置文件。我想执行我的 perl 命令并将结果分配给一个变量。

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

语法是什么?

4

4 回答 4

2

将脚本的返回值接收到变量中?我不知道 csh 语法,但在 bash 中是:

myvar=`perl ....`;

但是如果你想设置几个变量,就不确定了。

于 2012-06-01T14:03:39.723 回答
1

要设置多个变量,您可以使用printshell 将评估的 perl 脚本 csh 语法。

我不知道 csh 但在 bash 中应该这样做

#!/bin/sh
eval `perl -E 'say "FOO=123"; say "BAR=456"'`
echo "FOO is $FOO"
于 2012-06-01T14:12:06.470 回答
1

中的命令替换csh如下所示:

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

而且,顺便说一句,我希望您使用cshlike的后代tcsh。最初的csh实现是一个脑残的外壳。这篇经典论文描述了原因。

于 2012-06-01T19:54:29.300 回答
0

我有类似的要求,我使用的是 python 而不是 perl。我的 python 脚本正在生成 3 个输出字符串,并且需要在 csh 中将这些值设置为变量。

这是一个解决方案..希望它会有所帮助!

Python内部:

我使用了三个变量:x、y 和 z 我在 python 中只有一个打印语句,它打印: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}'`
于 2012-06-04T08:00:22.080 回答