Неожиданный EOF при поиске соответствия `) 'в сценарии оболочки - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть сценарий оболочки, который содержит эту команду:

  SNAPSHOT_ID=$(bash <<-EOF 
              aws rds create-db-snapshot 
              --db-instance-identifier $RDS_INSTANCE_ID 
              --db-snapshot-identifier $RDS_INSTANCE_ID-manual-$NOW_DATE 
              --query 'DBSnapshot.[DBSnapshotIdentifier]' --output text 
EOF
   )

Но я получаю эту ошибку:

строка 191: неожиданный EOF при поиске соответствия `)'

Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Вам не нужен вот-документ для отправки вашей команды в новую оболочку (и вы уже в подоболочке):

snapshot_id=$(aws rds create-db-snapshot \
    --db-instance-identifier "$RDS_INSTANCE_ID" \
    --db-snapshot-identifier "$RDS_INSTANCE_ID-manual-$NOW_DATE" \
    --query 'DBSnapshot.[DBSnapshotIdentifier]' --output text)

Вы делаете должныхотя экранируйте символы новой строки.

Я также добавил кавычки вокруг раскрытия параметров и поместил в нижнюю регистр одну создаваемую переменную, поскольку имена переменных в верхнем регистре зарезервированы для оболочки и утилит (см. POSIX spec ,четвертый абзац).

0 голосов
/ 26 сентября 2019
SNAPSHOT_ID=$(bash <<EOF
aws rds create-db-snapshot --db-instance-identifier $RDS_INSTANCE_ID --db-snapshot-identifier $RDS_INSTANCE_ID-manual-$NOW_DATE --query 'DBSnapshot.[DBSnapshotIdentifier]' --output text
EOF
)

проблемы были с "-" перед EOF и последним ")", казалось, плохо идентифицированы, не уверен, что из копирования / вставки.Попробуйте, если команды должны быть вставлены в новые строки, завершите их "\ n".

0 голосов
/ 26 сентября 2019

Я не уверен, что это ваш случай, но если второй EOF не начинается с начала строки (столбец 1), вы получите такую ​​ошибку.Например:

[root@tsekmanrhel771 ~]# cat eoftest.sh
#!/bin/sh

 SNAPSHOT_ID=$(bash <<-EOF
              aws rds create-db-snapshot 
              --db-instance-identifier $RDS_INSTANCE_ID 
              --db-snapshot-identifier $RDS_INSTANCE_ID-manual-$NOW_DATE 
              --query 'DBSnapshot.[DBSnapshotIdentifier]' --output text 
 EOF
   )
[root@tsekmanrhel771 ~]# ./eoftest.sh
./eoftest.sh: line 3: unexpected EOF while looking for matching `)'
./eoftest.sh: line 10: syntax error: unexpected end of file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...