我想在 bash 中传递部分命令,以便:
commandpart=( --flags "filename" >/dev/null )
command "${commandpart[@]}"
将评估为:
command --flags "filename" >/dev/null
这以前对我很有用,不幸的是,将 a>
放入 bash 数组会导致语法错误。
意外标记 `>'
`commandpart=( --flags "filename" >/dev/null )'附近的语法错误
我尝试过的其他事情是将它全部粘贴到一个字符串中并eval
对其进行 ing:
commandpart="--flags filename >/dev/null"
eval "command $commandpart"
但这会带来转义、空格等问题。(而且 eval 并不是最佳实践)
最好,如何在不转义字符的情况下修复第一个示例中的语法错误<>&
?我想继续使用这种数组语法,因为它似乎比 eval 更健壮并且不需要转义。
如果没有,是否有另一种方法可以满足我的需要来移动部分命令?
加分点:如果我将参数传递给要执行的脚本,如下所示:
#!/bin/bash
echo "script running"
command "${@}"
我有一个新问题,将其添加 >/dev/null
到脚本调用将其应用于脚本,而不是命令:
$ script >/dev/null
转义时将其应用于命令,但作为没有预期效果的字符串。(例如,如果命令是 firefox,它会在名为 '>/dev/null' 的页面上打开 firefox 并立即 404)