是的。
您可以重复该操作,如果该主题事先不存在,则如果命令成功,则该主题将存在。
您可以吞下 stderr (with 2>/dev/null
),然后检查上一个命令 ( $?
) 是否成功 ( 0
):
gcloud pubsub topic create do-something 2>/dev/null
if [ $? -eq 0 ]
then
# Command succeeded, topic did not exist
echo "Topic ${TOPIC} did not exist, created."
else
# Command did not succeed, topic may (!) not have existed
echo "Failure"
fi
注意这种方法忽略了这样一个事实,即命令可能失败并且主题不存在(即其他一些问题)。
或者(更准确,更昂贵!)您可以先枚举主题,然后尝试(!)创建它,如果它不存在:
TOPIC="some-topic"
RESULT=$(\
gcloud pubsub topics list \
--filter="name.scope(topics)=${TOPIC}" \
--format="value(name)" 2>/dev/null)
if [ "${RESULT}" == "" ]
then
echo "Topic ${TOPIC} does not exist, creating..."
gcloud pubsub topics create ${TOPIC}
if [ $? -eq 0 ]
then
# Command succeeded, topic created
else
# Command did not succeed, topic was not created
fi
fi
根据您的需求的复杂性,您可以使用以下方法进行自动化: