$ echo --hidden-import={a,b}
--hidden-import=a --hidden-import=b
相比于
echo --hidden-import={$FILES}
--hidden-import={cpu_mon disk_mon mem_mon network_mon}
由哪里FILES
创建
export FILES=$(ls)
在我希望得到的示例中
--hidden-import=cpu_mon --hidden-import==disk_mon --hidden-import==mem_mon --hidden-import==network_mon
大括号扩展发生在变量扩展之前。如果您让
{$x,$y}
外壳程序首先将其处理为两个参数$x
和$y
,然后才分别扩展每个参数中的变量。而且,如果您只有一项,则根本不会发生大括号扩展;{xy}
始终保持公正{xy}
。如果您正在编写 Bash,请改用数组和参数扩展:
这里的
#
in${var/#match/replacement}
使它仅在变量的开头替换(零长度)匹配字符串。files[@]
还要注意获取数组的所有元素而不仅仅是第一个元素的用法。如果这不起作用,只需使用循环构建参数列表:
或者,Bash 的 printf 可用于一次向多个参数添加前缀/后缀:
在最坏的情况下(如果您没有 Bash并且您已经排除了所有替代 CLI 脚本语言,例如 Perl 或 Python 甚至 PHP),请尝试 sed:
(故意使用反斜杠绕过别名,例如“ls -F”。)