我想导出多个变量,为此我决定将它们放在一个export
命令中,这样我就不会export
无缘无故地多次调用,这(逻辑上)会更慢(对吗?)
像这样:
export\
var1=a\
var2=b\
var3=c
[ ... ]
varn=zzz
但这不允许我再在两者之间添加评论:
export\
# Comment
var1=a\
var2=b # Comment \
var3=c\
[ ... ]
varn=zzz
因为反斜杠将所有内容放在同一行。
我怎样才能评论我想要导出的变量?我想我可以只调用export
每个变量,但我不想仅仅为了评论而放慢我的脚本。
编辑重复消息:虽然其他问题的答案也可以解决我的问题,但我相信这里的答案和评论也确实具有一定的价值
答案1
是的,有点。您几乎可以在任何地方放置命令替换,并且可以在命令替换中放置注释。它很丑,但很有效。
export\
$(# Comment
) \
var1=a\
var2=b $(# Comment
) \
var3=c
但是,如果您确实无法通过其他方式做到这一点,那么您就会这样做。几乎在所有情况下,您可以这样做,将命令分成多个部分,并在必要时在每个部分附加注释,更具可读性。如果您选择合理的变量名称,一些注释甚至可能没有必要。
这绝对不是你为了性能而做的事情。调用外部命令有点昂贵,但调用内置命令则不然。拆分export
命令不太可能对运行.zshrc
. (我在下面进行了基准测试,如果您对这一行进行基准测试,它实际上确实会产生影响,但在典型的规模上.zshrc
,这完全可以忽略不计。)无论如何,调用内置命令比命令替换更便宜,所以$(…)
上面的事情会让你的脚本变慢。
调用export
每个变量是否比每个变量调用一次慢?是有点。至少对于我测试的特定代码、版本和平台:差异足够小,以至于可能会有所不同。
% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar; }' 1 1000000
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar; }' 1 1000000 1.36s user 0.24s system 99% cpu 1.612 total
% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo; export var2=bar; }' 2 1000000
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo; export var2=bar; }' 2 1.67s user 0.43s system 99% cpu 2.097 total
然而,添加命令替换会使速度慢 100 倍! (注意迭代次数的减少。)
% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar $(); }' 3 10000
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar $(); }' 3 10000 1.33s user 1.00s system 107% cpu 2.165 total