Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态Bash变量。他们什么时候获得价值?_Bash_Shell_Variables - Fatal编程技术网

动态Bash变量。他们什么时候获得价值?

动态Bash变量。他们什么时候获得价值?,bash,shell,variables,Bash,Shell,Variables,假设我有 LOG="$(tail -n 1 /var/logs/sass/logs/style.log)" echo -e "$LOG". 何时设置变量:赋值时还是回显时?命令替换($(tail…)在bash解析时执行;甚至在执行变量赋值之前。(因此,在命令替换中使用变量的旧值是合法的。)命令替换($(tail…)在bash解析时执行;甚至在执行变量赋值之前。(因此,在命令替换中使用变量的旧值是合法的。)设置变量时。假设您有类似的代码 LOG="$(tail -n 1 /var/logs/s

假设我有

LOG="$(tail -n 1 /var/logs/sass/logs/style.log)" 
echo -e "$LOG".

何时设置变量:赋值时还是回显时?

命令替换(
$(tail…
)在bash解析时执行;甚至在执行变量赋值之前。(因此,在命令替换中使用变量的旧值是合法的。)

命令替换(
$(tail…
)在bash解析时执行;甚至在执行变量赋值之前。(因此,在命令替换中使用变量的旧值是合法的。)

设置变量时。假设您有类似的代码

LOG="$(tail -n 1 /var/logs/sass/logs/style.log)"
echo foo > /var/logs/sass/logs/style.log 
echo -e "$LOG".

然后
LOG
将包含日志文件的最后一行,而不是“foo”。

当设置变量时。假设您有类似的代码

LOG="$(tail -n 1 /var/logs/sass/logs/style.log)"
echo foo > /var/logs/sass/logs/style.log 
echo -e "$LOG".

然后
LOG
将包含日志文件的最后一行,而不是“foo”。

很容易测试您自己:

echo foo >file
filecontents=$(< file)
echo bar >file
echo "$filecontents"
echo foo>文件
filecontents=$(文件
回显“$filecontents”

输出为
foo
,这意味着
$(…)
是在分配
文件内容时执行的。

很容易测试自己:

echo foo >file
filecontents=$(< file)
echo bar >file
echo "$filecontents"
echo foo>文件
filecontents=$(文件
回显“$filecontents”

输出是
foo
,这意味着
$(…)
在分配
文件内容时执行。

提问者似乎认为他/她正在定义
$LOG
以匹配
tail-n 1/var/logs/sass/logs/style.LOG的动态值
事实并非如此——LOG是一个完全正常的变量,在执行赋值时设置一次,直到日志文件的最后一行

如果您确实想要定义某个动态对象,且仅在需要时才计算其值,则可以使用函数:

LOG()
{
  tail -n 1 /var/logs/sass/logs/style.log
}

然后只要你想叫它(如
LOG
)。

提问者似乎认为他/她正在定义
$LOG
,以匹配
tail-n1/var/logs/sass/logs/style.LOG的动态值
事实并非如此——LOG是一个完全正常的变量,在执行赋值时设置一次,直到日志文件的最后一行

如果您确实想要定义某个动态对象,且仅在需要时才计算其值,则可以使用函数:

LOG()
{
  tail -n 1 /var/logs/sass/logs/style.log
}
然后,只要在需要时调用它(如
LOG