加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash:将整个命令(带参数)传递给函数

发布时间:2020-12-15 17:01:22 所属栏目:安全 来源:网络整理
导读:我本质上是试图实现一个函数,它断言另一个命令的失败(非零退出代码),并在失败时打印一条消息. 这是我的功能: function assert_fail () { COMMAND=$@ if [ `$COMMAND; echo $?` -ne 0 ]; then echo "$COMMAND failed as expected." else echo "$COMMAND didn
我本质上是试图实现一个函数,它断言另一个命令的失败(非零退出代码),并在失败时打印一条消息.

这是我的功能:

function assert_fail () {
    COMMAND=$@
    if [ `$COMMAND; echo $?` -ne 0 ]; then 
        echo "$COMMAND failed as expected."
    else
        echo "$COMMAND didn't fail"
    fi
}

# This works as expected
assert_fail rm nonexistent

# This works too
assert_fail rm nonexistent nonexistent2

# This one doesn't work
assert_fail rm -f nonexixtent

只要我向命令添加选项,它就不起作用.以下是上述输出:

rm: cannot remove `nonexistent': No such file or directory
rm nonexistent failed as expected.
rm: cannot remove `nonexistent': No such file or directory
rm: cannot remove `nonexistent2': No such file or directory
rm nonexistent nonexistent2 failed as expected.
rm -f nonexistent didn't fail

我试过在命令周围加双引号,但没有用.我希望上面的第三次调用产生与其他两种相似的输出.

我感谢任何/所有的帮助!

rm -f永远不会在不存在的文件上失败.它与你的包装器无关.见男人:
OPTIONS
       -f,--force
              ignore nonexistent files,never prompt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读