ACCESS_TOKEN
nullが等しいことを確認して終了するbashスクリプトがあります。
ACCESS_TOKEN=$(jq -r '.access_token' <<<"$(curl --request GET \
--url 'https://'$LANDSCAPE'/oauth/token/?grant_type=client_credentials' \
-u "$CLIENT_ID":"$CLIENT_SECRET")")
if [[ -n $ACCESS_TOKEN -eq null ]]; then
exit 1
fi
または:
ACCESS_TOKEN=$(jq -r '.access_token' <<<"$(curl --request GET \
--url 'https://'$LANDSCAPE'/oauth/token/?grant_type=client_credentials' \
-u "$CLIENT_ID":"$CLIENT_SECRET")")
if [ -n "$ACCESS_TOKEN" -eq null ]; then
exit 1
fi
コンソールログ:
+ ACCESS_TOKEN=null
+ '[' -n null -eq null ']'
/tmp/jenkins6798373284183556496.sh: line 8: [: too many arguments
if condition
それほどうまくいくようには思えません。
ベストアンサー1
文字列が空でないことを確認したい場合そして「null」の場合、より良い構文は次のとおりです。
if [ -n "$ACCESS_TOKEN" ] && [ "$ACCESS_TOKEN" = "null" ]
then
exit 1
fi
@Tomazが正しく指摘したように、Bash構文を使用すると、両方の前提を同時に確認することはできません。
@Kusanalandaも指摘したように、最初のテストは関係がなく、単にif
使用法を説明/説明するためのものです。論理的に$ACCESS_TOKENを再テストするとひも「null」の場合、すでに文字列が空でないことを意味するため、実際には次のように書き直すことができます。
if [ "$ACCESS_TOKEN" = "null" ]
then
exit 1
fi