本意想返回一个false即可,结果带了一个node路径出来,脚本如下:
#!/bin/bash
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
read -t 30 -p "请输入手机号:" phone
#提示“请输入密码”并等待30秒,把用户的输入保存入变量pwd中,输入内容隐藏
read -t 30 -s -p "请输入用户密码:" password
echo -e "\n"
#登录接口
loginRes=`curl -X POST "'Content-type':'application/json'" -d '{"api":"login.pw","params":{"loginId":'$phone',"password":'$password',"appId":"yptb"},"nonce":"uuid","sign":"sign","version":"1.0","timestamp":"230993499430010"}' https://apigw.xxxx.com/request`
echo "登录返回信息:$loginRes"
function getJsonValueByNode() {
if which node; then
local json="$1"
local key="$2"
node -pe "JSON.stringify(JSON.parse(process.argv[1]).$key)" "$json" | awk '{print ($0 == "undefined" ? "null" : $0)}'
return 0
else
return 1
fi
}
value=$(getJsonValueByNode $loginRes "result.success")
echo "变量:$value"
解决方式:
将which的输出到/dev/null中,参考:How can I check if a program exists from a Bash script? - Stack Overflow