問題:
シェルスクリプトをrubyスクリプトのサブプロセスとして実行しています。スクリプトを実行した後、配列変数を含むシェルのすべての環境変数をチェックするオプションが必要です。
これまでのところ私は思いついた:
set | awk -F= 'BEGIN {v=0;}
/^[a-zA-Z_][a-zA-Z0-9_]*=/ {v=1;}
v==1 && $2~/^['\''\$]/ {v=2;}
v==1 && $2~/^\(/ {v=3;}
v==2 && /'\''$/ && !/'\'\''$/ {v=1;}
v==3 && /\)$/ {v=1;}
v {print;}
v==1 {v=0;}
'
これは、配列、複数行の文字列、フィルターアウト関数などの変数のみを示しています。
ただし、これは常に同じ形式を使用するわけではありません。特に、配列変数はBASHとZSHで異なって表されます。
これが私の現在の実装です:https ://github.com/mpapis/tf/blob/master/lib/tf/environment.rb
質問:
BASHおよびZSH/場合によっては他のシェルで永続的に機能するすべての変数を表示する簡単な方法はありますか?