Я использую следующий оператор if в декларативном конвейере сценария оболочки:
def currTaskDef = sh (
returnStdout: true,
script: """
#!/bin/bash
RESULT=`(aws ecs describe-task-definition --task-definition ${env.TASK_FAMILY} | egrep 'revision' | tr ',' ' ' | awk '{print \$2}') 2> /dev/null`
if ( ! "\$RESULT" ) then
echo 1
else
aws ecs describe-task-definition --task-definition ${env.TASK_FAMILY} \
| egrep 'revision' \
| tr ',' ' ' \
| awk '{print \$2}'
fi
"""
).trim()
Я получаю следующее разрешение, в котором отказано:
/home/jenkins/workspace/dev-test-local@tmp/durable-28ccc40c/script.sh: 4: /home/jenkins/workspace/dev-test-local@tmp/durable-28ccc40c/script.sh: : Permission denied
...
Finished: SUCCESS
Если я использую оператор bash if, если не работает:
if [[ ! "\$RESULT" ]]; then
echo 1
else
aws ecs describe-task-definition --task-definition ${env.TASK_FAMILY} \
| egrep 'revision' \
| tr ',' ' ' \
| awk '{print \$2}' \
fi
Вывод:
+ [[ ! ]]
/home/jenkins/workspace/dev-test-local@tmp/durable-d7af8721/script.sh: 4: /home/jenkins/workspace/dev-test-local@tmp/durable-d7af8721/script.sh: [[: not found
Как избавиться от отказа в разрешении и почему не работает оператор bash if?