環境変数だけをエコーし​​、bash関数はエコーしない

環境変数だけをエコーし​​、bash関数はエコーしない

bash変数はエコーですが、bash関数はエコーしない方法はありますか?

私はこれを行うことができます

env | grep -v 'BASH_FUNC'

しかし、通常は複数行なので、関数の他の行はエコーされます。

ベストアンサー1

すべての環境変数を一覧表示しますが、エクスポートした関数を一覧表示したくない場合は、次の手順に従ってください。

for n in `compgen -e`; do echo "$n=${!n}"; done

compgen -e変数の名前がここにリストされます。echo名前とその値が出力されます。値を引用する${!n@Q}代わりに使用する${!n}ファイルまたはeval

(編集:)
注:配列が含まれている場合は、配列を無視するのではなく、配列envインデックスとともに値を印刷します。0(連想配列の場合、0インデックスがないname=場合は印刷されます。)
この問題を処理する方法については、次の質問に対する回答を参照してください。このスタックオーバーフローの質問

おすすめ記事