如何发送带有消息的命令以在成功时回显到 bash 函数?
How do I send a command with a message to echo on success to a bash function?
我写了一个函数来检查命令是否成功执行,如果没有,则抛出错误。
assert_success () {
""
if [[ $? == 0 ]]; then
echo ""
fi
}
假设我要执行以下命令并出现给定错误:
assert_success <command> <error_message>
基本上,类似于以下内容:
assert_success $(mkdir blah) "This worked"
但是,我得到 a.sh: line 3: This worked: command not found
如何让 echo
在此处正常工作?
问题出在这个调用中:
assert_success $(mkdir blah) "This worked"`
您正在 传递 mkdir
命令 的输出,而不是 mkdir
命令本身。由于 mkdir
的输出是空的,并且它是 unquoted "This worked"
在你的函数中变成 </code> 并且你得到错误:<code>This worked: command not found
我建议你有这样的功能:
assert_success () {
msg=""
shift
if $@; then
echo "$msg"
fi
}
并将此函数称为:
assert_success "This worked" mkdir blah
除了我评论link中讨论的问题外,不需要这样的功能。简单地 运行 您的命令更短,然后使用 &&
运算符打印成功消息。比较
mkdir blah && echo "This worked"
与
assert_success "mkdir blah" "This worked"
或anubhava的解决方案
assert_success "This worked" mkdir blah
我写了一个函数来检查命令是否成功执行,如果没有,则抛出错误。
assert_success () {
""
if [[ $? == 0 ]]; then
echo ""
fi
}
假设我要执行以下命令并出现给定错误:
assert_success <command> <error_message>
基本上,类似于以下内容:
assert_success $(mkdir blah) "This worked"
但是,我得到 a.sh: line 3: This worked: command not found
如何让 echo
在此处正常工作?
问题出在这个调用中:
assert_success $(mkdir blah) "This worked"`
您正在 传递 mkdir
命令 的输出,而不是 mkdir
命令本身。由于 mkdir
的输出是空的,并且它是 unquoted "This worked"
在你的函数中变成 </code> 并且你得到错误:<code>This worked: command not found
我建议你有这样的功能:
assert_success () {
msg=""
shift
if $@; then
echo "$msg"
fi
}
并将此函数称为:
assert_success "This worked" mkdir blah
除了我评论link中讨论的问题外,不需要这样的功能。简单地 运行 您的命令更短,然后使用 &&
运算符打印成功消息。比较
mkdir blah && echo "This worked"
与
assert_success "mkdir blah" "This worked"
或anubhava的解决方案
assert_success "This worked" mkdir blah