0

古いシェル スクリプトをデバッグしています。使用されているすべての変数の値を確認したいのですが、約 140 を超える変数が使用されている巨大な醜いスクリプトです。とにかく、スクリプトから変数名を抽出して、次のような便利なパターンに入れることができますか?

#!/bin/sh
if [ ${BLAH} ....
.....
rm -rf ${JUNK}.....

echo ${BLAH}
echo ${JUNK}
...
4

4 に答える 4

1

次のようにスクリプトを実行してみてください。

bash -x ./script.bash

または、スクリプトで設定を有効にします。

set -x
于 2013-06-21T15:02:54.120 に答える
1

以下を使用して、関心のあるすべての変数を 1 つのコマンドでダンプできます。

set | grep -w -e BLAH -e JUNK

すべての変数を stdout にダンプするには、次を使用します。

set

また

env

スクリプト内から。

于 2013-06-21T15:05:01.943 に答える
0

次を使用して、スクリプトで宣言された変数の (サブ) リストを抽出できますgrep

grep -Po "([a-z][a-zA-Z0-9_]+)(?==\")" ./script.bash | sort -u

免責事項: なぜ「サブリスト」なのですか?

指定された式は、文字列の後にイーガル記号 ( =) と二重引用符 ( ") が続くものと一致します。したがって、次のような構文を使用しないと機能しませmyvar="my-value"ん。しかし、あなたはアイデアを得ました。

grepオプション

  • -P --perl-regexp: PATTERN を Perl の正規表現 (PCRE、以下を参照) として解釈します (実験的)。
  • -o --only-matching: 一致する行の一致した (空でない) 部分のみを出力し、そのような部分はそれぞれ別の出力行に出力します。

パターン

私は正の先読みを使用しています:(?==\")イーガル記号の後に二重引用符が必要です。

于 2013-06-21T15:30:24.207 に答える