$ echo --hidden-import={a,b}
--hidden-import=a --hidden-import=b
Run Code Online (Sandbox Code Playgroud)
相比于
echo --hidden-import={$FILES}
--hidden-import={cpu_mon disk_mon mem_mon network_mon}
Run Code Online (Sandbox Code Playgroud)
FILES由哪里创建
export FILES=$(ls)
Run Code Online (Sandbox Code Playgroud)
在我希望得到的例子中
--hidden-import=cpu_mon --hidden-import==disk_mon --hidden-import==mem_mon --hidden-import==network_mon
Run Code Online (Sandbox Code Playgroud)
use*_*686 15
大括号扩展发生在变量扩展之前。如果您让{$x,$y}shell 首先将其处理为两个参数$xand $y,然后才分别扩展每个参数中的变量。如果您只有一项,则根本不会发生大括号扩展;{xy}永远只是{xy}。
如果您正在为 Bash 编写代码,请改用数组和参数扩展:
files=(*)
echo "${files[@]/#/--hidden-import=}"
Run Code Online (Sandbox Code Playgroud)
这里#in${var/#match/replacement}使它仅在变量的开头替换(零长度)匹配字符串。还要注意files[@]获取数组的所有元素而不是第一个元素的用法。
如果这不起作用,只需使用循环构建参数列表:
args=()
for file in *; do
args+=("--hidden-import=$file")
done
echo "${args[@]}"
Run Code Online (Sandbox Code Playgroud)
或者,Bash 的 printf 可用于一次向多个参数添加前缀/后缀:
printf '--hidden-import=%s\n' * | xargs -d '\n' echo
Run Code Online (Sandbox Code Playgroud)
在最坏的情况下(如果您没有 Bash并且您已经排除了所有替代的 CLI 脚本语言,例如 Perl 或 Python 甚至 PHP),请尝试 sed:
\ls | sed "s/^/--hidden-import=/" | xargs -d '\n' echo
Run Code Online (Sandbox Code Playgroud)
(故意反斜杠绕过别名,如'ls -F'。)
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |