quando usar aspas duplas com uma variável no shell script? [duplicado]

4

Estou confuso com o que se entende por aspas duplas referindo-se a uma variável. Por exemplo, seguir dois scripts fornece a mesma saída. O que realmente significa as aspas duplas?

Script1

getent passwd | while IFS=: read a b c d e f ; do
echo login "$a" is "$d"
done

script 2

#! /bin/sh

getent passwd | while IFS=: read a b c d e f ; do

    echo login $a is $d
done
    
por DesirePRG 03.06.2013 / 07:23

1 resposta

6

Dê uma olhada no Guia de Scripts Avançados do Bash , especificamente na seção 5.1 que cobre as variáveis de cotação . A razão pela qual você aspas duplas é porque o conteúdo da variável pode incluir espaços. Um espaço é tipicamente o caractere de limite que denota uma quebra nos átomos dentro de uma cadeia de texto para a maioria dos comandos.

Há um bom exemplo que ilustra esse ponto:

trecho do link acima

variable2=""    # Empty.

COMMAND $variable2 $variable2 $variable2
                # Executes COMMAND with no arguments. 
COMMAND "$variable2" "$variable2" "$variable2"
                # Executes COMMAND with 3 empty arguments. 
COMMAND "$variable2 $variable2 $variable2"
                # Executes COMMAND with 1 argument (2 spaces).
# Thanks, Stéphane Chazelas.

Acima, você pode ver que, dependendo de como você cita a variável, não há argumentos, 3 ou 1.

OBSERVAÇÃO: Agradecemos a @ StéphaneChazelas por fornecer esse feedback ao Guia do ABS para que ele possa voltar a este site onde ele está sempre participando.

    
por 03.06.2013 / 07:37