为什么
${username=`whoami`}
Run Code Online (Sandbox Code Playgroud)
抛出一个错误,而
: ${username=`whoami`}
Run Code Online (Sandbox Code Playgroud)
执行任务没有任何不良影响?
我理解:是占位符.它在这个命令中有什么用?它相当于跑步: 'whoami'吗?
作为参考,以前的用法以前称为#3,新的用法称为#4.
${parameter=value}
Run Code Online (Sandbox Code Playgroud)
做两件事:它具有分配value给parameterif的副作用,如果parameter尚未设置,以及扩展到parameter完成时的值的直接影响.
该错误是直接影响的结果:当您运行时
${user=`whoami`}
Run Code Online (Sandbox Code Playgroud)
...在它自己的行上,然后扩展为并尝试运行whoami作为命令的输出.假设用户变量先前未分配给,并且输出whoami为james; 然后它会尝试运行命令james,这会引发错误.
相比之下,跑步
: ${user=`whoami`}
Run Code Online (Sandbox Code Playgroud)
...首先执行副作用(对userif 进行赋值user尚未设置),然后运行:
: james
Run Code Online (Sandbox Code Playgroud)
...没有效果,因此只执行(分配的)副作用.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |