私は Unix でいくつかの成長痛を経験しています。私の質問:
シェルですべてのユーザー定義変数を出力できるようにしたいと考えています。シェルで次のことをするとします。
$ x=9
$ y="Help"
$ z=-18
$ R="My 4th variable"
印刷方法は次のとおりです。
xyz R
最初に実行時に変数を で記録しset
、後で比較してどの変数が追加されたかを確認する必要があります。例:
#!/bin/bash
set | grep -E '^[^[:space:]]+=' | cut -f 1 -d = | sort > /tmp/previous.txt
a=1234
b=1234
set | grep -E '^[^[:space:]]+=' | cut -f 1 -d = | sort > /tmp/now.txt
comm -13 /tmp/previous.txt /tmp/now.txt
出力:
a
b
PIPESTATUS
シェルによって生成された他の変数がまだありますが、ユーザーによって宣言されていないことに注意してください。でフィルタリングできますgrep -v
。シェルにも依存します。
追加: grep と cut は、単純に sed を 1 つだけにすることができます。sed -n 's/^\([^[:space:]]\+\)=.*/\1/p'