"if [ -z $variable ]" 在 shell 脚本中无法识别我的变量

"if [ -z $variable ]" in a shell script is not recognising my variable

当我 运行 以下脚本时,它一直默认为 else 语句,我不确定为什么。我什至包括了一个 echo $workflow 它向我显示了我期望看到的名称,但它仍然默认为 else 语句。

我试过包含一个 export namecheck=$workflow 来查看是否是问题所在,但它仍然给出相同的最终结果

#!/bin/sh

read -p "Enter the workflow name: " workflowName

workflowName=${workflowName}

curl --request GET --url https://website.com > workflowjson.txt

workflow=$(jq -r .metadata.name workflowjson.txt)

echo $workflow

if [ -z "$workflow" ] then
    echo "Workflow is Valid" 
else
    echo "Workflow is not valid" 
fi

man test 显示

-z STRING the length of STRING is zero

当工作流为空时,代码输出 Workflow is Valid

交换 thenelse 部分,或否定条件(使用 -n 而不是 -z)。

尝试将工作流程中的引号去掉,然后单独放在一行中

if [ -z $workflow ]
then
  echo "Workflow is Valid" 
else
  echo "Workflow is not valid"
fi