Ниже приведена одна команда вкладыша:
while INSTANCE_STATE=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --output text --query 'Reservations[*].Instances[*].State.Name'); test "$INSTANCE_STATE" = "pending"; do sleep 1; echo -n '.'; done
Ниже приведен сценарий оболочки:
#!/bin/bash
INSTANCE_ID=
while INSTANCE_STATE=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --output text --query 'Reservations[*].Instances[*].State.Name');
test "$INSTANCE_STATE" = "running"
do
sleep 1
echo -n '.'
done
echo " $INSTANCE_STATE"
Вы должны придерживаться первого кода, так как другой сначала оценивает условие изатем присваивает значение, тогда как в первом он присваивает значение первым, а затем оценивает, что сохранит присвоение шага переменной.
Другой код выдает ошибку ниже из-за вышеуказанной причины:
line 3: [: too many arguments
В некоторых местах проблема, с которой вы сталкиваетесь, является дополнительной \
.В противном случае ваш код работает нормально.