私は csh スクリプトを持っています。私の目標は、perl モジュール Config::Simple を使用して ini 構成ファイルを読み取ることです。perl コマンドを実行し、結果を 1 つの変数に代入したいと考えています。
perl -MConfig::Simple -e '$cfg = new Config::Simple("../config.ini"); $myvar = $cfg->param("myvar");'
構文は何ですか?
スクリプトの戻り値を変数に受け取りますか? csh の構文はわかりませんが、bash では次のようになります。
myvar=`perl ....`;
しかし、いくつかの変数を設定したい場合は、わかりません。
いくつかの変数を設定するにはprint
、シェルが評価する 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
実装は、脳死状態の壊れたシェルです。この古典的な論文は、その理由を説明しています。
同様の要件があり、perl の代わりに python を使用していました。私の python スクリプトは 3 つの出力文字列を生成していましたが、値を変数として csh に設定する必要がありました。
ここに解決策があります..それが役立つことを願っています!
Python の内部:
私は 3 つの変数を使用していました: 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}'`