私はすでに遅延変数展開を見てきましたが、それを誤解しない限り、ここでの問題にはうまくいかないようです。
特定の形式で常に現在の時刻に評価されるシェル変数を作成したいと思います。これが私の最初の試みです。
foo=$(date +'%H-%M-%S')
残念ながら、これはコマンドを実行し、その結果を変数に割り当てますfoo
。代わりに、$foo
コマンドを実行して結果を表示できるようにしたいと思います。
より実際の使用例を示すために、WriteOutputTo
出力を書き込むファイル名を最初の引数として取る(ブラックボックス)プログラムが呼び出されたとします。シェルに次のように書けるようにしたいと思います。
./WriteOutputTo Output_$foo
これは次の方法で実行できることを理解していますが、冗長すぎるように思われるため、代わりに短い変数を使用できるかどうかを知りたいと思います。
./WriteOutputTo Output_$(date +'%H-%M-%S')
bashに最も近いのは、fooを関数として定義することです。
foo(){ date +'%H-%M-%S'; }
そして、あなたは書くことができます
./WriteOutputTo Output_$(foo)
他のシェルには、これを実現するメカニズムがあります。たとえばksh
、次の「get」規律関数を定義できますfoo
。
foo.get() { .sh.value=$(date +'%H-%M-%S'); }
その後、を使用すると$foo
、dataコマンドの実行結果が返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加