Como atribuir um valor de string de múltiplas linhas a uma variável com recuo em um script de shell?

0

Eu quero atribuir o seguinte valor de sequência de várias linhas a uma variável em um script de shell com as linhas e recuos exatos.

Usage: ServiceAccountName LogFile
Where:
      ServiceAccountName - credentials being requested.
      LogFile            - Name of the log file

Eu tenho tentado fazer isso seguindo todas as sugestões em: Como atribuir um valor de string a uma variável ao longo de várias linhas enquanto recuado? Mas sem resultado. Por favor sugira.

REASON="$(cat <<-EOF
    Usage: ServiceAccountName LogFile
    Where:
      ServiceAccountName - credentials being requested.
      LogFile            - Name of the log file
EOF
)"
echo "$REASON"

Aqui está o meu script:

GetBatchCredentials.sh

if [ $# -ne 2 ]
then
   # RETURN INVALID USAGE
   GetBatchCredentials_Result="Error"
   GetBatchCredentials_Reason="$(cat <<-EOF
        Usage: ServiceAccountName LogFile
        Where:
          ServiceAccountName - credentials being requested.
          LogFile            - Name of the log file
    EOF
    )"
else
   //coding...
fi

Esses scripts são chamados do seguinte script:

. /www/..../scripts/GetBatchCredentials.sh arg1 arg2
if [ "$GetBatchCredentials_Result" != "Success" ]
then
   echo "Error obtaining FTP Credentials"
   echo "$GetBatchCredentials_Reason"
   ret=1
else
   echo "Obtained Credentials"
fi
    
por devlperMoose 21.01.2016 / 20:20

2 respostas

0

Seu script funciona para mim. Tudo o que fiz de forma diferente é adicionar #! / Bin / sh no topo. Em seguida, tornou executável e executou. Você também pode usar sh e o nome do seu script original.

#!/bin/sh
REASON="$(cat <<-EOF
Usage: ServiceAccountName LogFile
Where:
      ServiceAccountName - credentials being requested.
      LogFile            - Name of the log file
EOF
)"
echo "$REASON"
    
por 21.01.2016 / 21:41
1

Em vez de um documento aqui com um gato inútil, o que quer que seja

REASON="\
Usage: ServiceAccountName LogFile
Where:
      ServiceAccountName - credentials being requested.
      LogFile            - Name of the log file"

ou

REASON="$(printf '%s\n' \
    "Usage: ServiceAccountName LogFile" \
    "Where:" \
    "      ServiceAccountName - credentials being requested." \
    "      LogFile            - Name of the log file")"
    
por 21.01.2016 / 21:59