我有一个 csh 脚本,我的目标是使用 perl 模块 Config::Simple 读取一个 ini 配置文件。我想执行我的 perl 命令并将结果分配给一个变量。
perl -MConfig::Simple -e '$cfg = new Config::Simple("../config.ini"); $myvar = $cfg->param("myvar");'
语法是什么?
将脚本的返回值接收到变量中?我不知道 csh 语法,但在 bash 中是:
myvar=`perl ....`;
但是如果你想设置几个变量,就不确定了。
要设置多个变量,您可以使用print
shell 将评估的 perl 脚本 csh 语法。
我不知道 csh 但在 bash 中应该这样做
#!/bin/sh
eval `perl -E 'say "FOO=123"; say "BAR=456"'`
echo "FOO is $FOO"
中的命令替换csh
如下所示:
#!/bin/csh
set VAR=`perl -E 'say q(hello world)'`
echo ${VAR}
而且,顺便说一句,我希望您使用csh
like的后代tcsh
。最初的csh
实现是一个脑残的外壳。这篇经典论文描述了原因。
我有类似的要求,我使用的是 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}'`