保存命令的 shell 脚本变量如何工作?

保存命令的 shell 脚本变量如何工作?

我正在尝试创建一个自动编译脚本,每当我启动计算机时,它都会从源代码编译程序。目前它大致是这样的(我不记得确切的语法):

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没有改变。

相关内容