gpt4 book ai didi

linux - 如何将带引号的字符串作为参数传递给 bash 中的函数?

转载 作者:太空狗 更新时间:2023-10-29 12:06:02 25 4
gpt4 key购买 nike

我有一个简单的 bash 函数,其目标是运行作为字符串传入的命令,检查 $? 中的返回码,如果返回非零值,则打印第二个参数中指定的错误并退出。

函数如下:

function checkcommand()
{
$1
if [ "$?" -ne "0" ]; then
echo "$2"
exit 1
fi
}

这个功能很好用。以下是一些有效的示例:

checkcommand "git clone /home/git/framework.git $gitreponame" "git clone failed!
"

当我想使用我的函数来验证提交是否成功时,问题就来了:

checkcommand "git commit -m\"remove migrations from release-$todaysrelease-pr
ep\"" "Commit for migrations removal from release-$todaysrelease-prep failed!"

我试过(如图所示)baclslash 引号、单引号、单引号和双引号的各种组合等。

感谢您提供任何线索!

最佳答案

保留单词列表为单词列表;不要将它们引用成一个词只是为了稍后将其扩展:eval 是邪恶的。

典型的 die 函数是一个更简单且更易读的习惯用法:

die() {
echo "$*" >&2
exit 1
}

git commit -m"remove migrations from release-$todaysrelease-prep" ||
die "Commit for migrations removal from release-$todaysrelease-prep failed!"

关于linux - 如何将带引号的字符串作为参数传递给 bash 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com