我正在尝试减少脚本中的代码量。我想要做的是将命令的结果传递给一个函数,该函数会告诉我命令是否通过或失败,然后如果失败则退出。
这是接收函数:
function SanityChk() {
if [ $1 != "0"]; then
echo "FAIL"
else
echo "PASS"
fi
}
我知道我可以运行命令然后只需将 $? 传回来......
sudo cp test.txt test.dat
SanityCheck $?
但是我想在一行中完成。我一直尝试使用“eval”,因此结果是这样的:
SanityCheck eval$(sudo cp test.txt test.dat)
但它似乎返回了除结果之外的任何内容。
所以问题是我怎样才能获得退出结果?
答案1
您可以只传递命令和所有参数:
SanityCheck () {
if "$@"; then
echo yes
else
echo no
fi
}
SanityCheck sudo cp test.txt test.dat
或者执行该函数立即地运行该命令后:$?
是的退出状态最后一个命令
SanityCheck () {
if (($? == 0)); then
echo yes
else
echo no
fi
}
sudo cp test.txt test.dat
SanityCheck
答案2
只需将退出状态分配给变量:
some_command
status=$?
然后你就可以做你想做的事了$status
。