From上一条命令的最后一个参数是什么?
shellcheck 告诉您不要在分配变量的同一行上导出变量。
我想知道为什么?
做了同样的建议适用于alias
,declare
,export
,local
,readonly
,和typeset
?
l0b*_*0b0 54
该问题是,在击每一个命令只有一个退出代码。当你export foo="$(false)"
的退出代码false
被简单地丢弃。如果你这样做
foo="$(false)"
export foo
Run Code Online (Sandbox Code Playgroud)
例如,可以通过errexit
设置对失败的第一个命令采取行动。
声明和分配一个字符串文字,例如export foo='bar'
当然不会遇到这个问题。但是变化是软件开发中唯一不变的,并且通过将它们拆分来使这些陈述面向未来是很好的内务管理。
除了您提到的分配特定命令之外,单个分配中还有多个命令,例如foo="$(false)$(true)"
. 见pipefail
在man bash
为又一个这样的陷阱。
要记住的另一件事是声明和赋值的顺序有时是相关的。例如,您需要在分配变量之前先声明它们。(不幸的是,在第一次分配变量之前无法声明它们。)local
readonly
归档时间: |
|
查看次数: |
6069 次 |
最近记录: |