"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
。
交换 then
和 else
部分,或否定条件(使用 -n
而不是 -z
)。
尝试将工作流程中的引号去掉,然后单独放在一行中
if [ -z $workflow ]
then
echo "Workflow is Valid"
else
echo "Workflow is not valid"
fi
当我 运行 以下脚本时,它一直默认为 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 ofSTRING
is zero
当工作流为空时,代码输出 Workflow is Valid
。
交换 then
和 else
部分,或否定条件(使用 -n
而不是 -z
)。
尝试将工作流程中的引号去掉,然后单独放在一行中
if [ -z $workflow ]
then
echo "Workflow is Valid"
else
echo "Workflow is not valid"
fi