我需要在 bash 文件中编写一个执行命令并忽略输入。
例子
pvs --noheadings -o pv_name,vg_name,vg_size 2> /dev/null
上面的命令在命令行中运行良好,但是当我在 shell 中编写相同的命令时,它会给我一个错误
喜欢
Failed to read physical volume "2>"
Failed to read physical volume "/dev/null"
我猜它看起来像是整个命令的一部分。你能给我一些关于如何纠正它的建议吗?
提前致谢。
完整代码
#--------------------------------
main() {
pv_cmd='pvs'
nh='--noheadings'
sp=' '
op='-o'
vgn='vg_name'
pvn='pv_name'
pvz='pv_size'
cm=','
tonull=' 2 > /dev/null '
pipe='|'
#cmd=$pv_cmd$sp$nh$sp$op$sp$vgn$cm$pvn$cm$pvz$sp$pipe$tonull #line A
cmd='pvs --noheadings -o vg_name,pv_name,pv_size 2> /dev/null' #line B
echo -n "Cmd="
echo $cmd
$cmd
主要
#-------------------------------------------- ------
如果您查看 A 行和 B 行,两个版本都在那里,尽管一个被注释掉了......
最佳答案
您不能在引用的字符串中包含 2>/dev/null。引用删除发生在处理重定向后。你必须做
cmd='pvs --noheadings -o vg_name,pv_name,pv_size'
$cmd 2> /dev/null
重定向才能正常工作。
关于linux - 需要将输出重定向到/dev/null....在命令行中工作正常但在 shell 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459100/