linux - 需要将输出重定向到/dev/null....在命令行中工作正常但在 shell 中不工作

标签 linux bash shell rhel5 lvm

我需要在 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/

相关文章:

php - exec 退出代码 11 的含义

linux - bash 脚本正确解释 awk

linux - 在每行中查找文件中具有特定偏移量的所有单词(bash)

Python 标准输出显示 emacs 中的隐藏字符

mysql - 从命令行访问 MAMP 的 mysql

linux - shell 脚本 : if condition not evaluating properly

linux - CMake递归地将目录的所有子目录内的所有源文件添加到可执行文件?

linux - 如何在 Linux 中使用 grep 进行多个基于 '&' 的搜索

linux - 在 Iptable 中阻止网页

regex - 将 cmd 输出的正则表达式结果返回到变量