Bash: como aceitar corretamente a entrada do usuário?

2

Não consegui encontrar um exemplo on-line, mas tenho certeza de que vi codificadores de shell usar ${1:--} para aceitar entrada do usuário. Aqui está um exemplo:

#!/bin/bash

var="${1:--}"
echo "$var"

Em seguida, execute-o:

$ ./test.sh "this is a test"

Minha pergunta é: como está usando "${1:--}" para aceitar entrada de usuário diferente de "$1" ?

    
por user318062 28.10.2018 / 00:56

2 respostas

1

${1:--} expandirá para a string "-" se não houver um parâmetro ou se o parâmetro estiver vazio.

Portanto, ./test.sh "" retornará a string "-", assim como o comando ./test.sh Isso é considerado um padrão útil em muitas circunstâncias, onde um argumento de "-" pode significar stdin ou stdout . Também garante que os scripts não sejam quebrados quando um parâmetro não for definido explicitamente.

    
por 28.10.2018 / 01:09
0

Sob a expansão do parâmetro bash você pode usar o valor padrão da variável e é isso que ${1:--} faz ao argumento do comando thirst, ou seja, ele atribui o valor - se e somente se $1 não está definido ou nulo. Ele funciona com outros parâmetros também, teste este exemplo:

echo "${var:-X}"   # var is not defined so X will be echoed
var=Y              # lets define var
echo "${var:-X}"   # var is defined so its value Y will be printed
    
por 28.10.2018 / 01:12