![シェルスクリプト変数保持コマンドはどのように機能しますか? [閉鎖]](https://linux33.com/image/78952/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E5%A4%89%E6%95%B0%E4%BF%9D%E6%8C%81%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
コンピュータを起動するたびに、ソースからプログラムをコンパイルする自動コンパイルスクリプトを作成しようとしています。現在は次のようになります(正確な構文は覚えていません)。
VAR=$(sudo git pull)
if (VAR = "Nothing to update")
{
#do nothing
}
else {
#compile package
}
これはうまくいくでしょうか? VAR = $またはif文中にsudo git pullが呼び出されるかどうかを知りたいです。
答え1
このコマンドは、初期コマンドの置き換え(たとえば)中にのみ呼び出されますVAR=$(sudo git pull)
。
これを簡単にテストできます。
$ VAR=$(touch foo; echo bar)
$ echo $VAR
bar
$ ls -l foo
-rw-r--r-- 1 me me 0 Dec 7 16:28 foo
ファイルが生成され、foo
コマンド置換()の出力bar
がに割り当てられていることがわかります$VAR
。
今しばらく待ってから、変数にもう一度アクセスしてください。
$ echo $VAR
bar
$ ls -l foo
-rw-r--r-- 1 me me 0 Dec 7 16:28 foo
表示される修正時間はfoo
変更されませんでした。