As variáveis usadas em ${1:-8}
e ${2:-4}
são os parâmetros posicionais $1
e $2
. Estes mantêm os valores passados para o script (ou função de shell) na linha de comando. Se eles não estiverem definidos, as substituições de variáveis mencionadas usarão os valores padrão 8 e 4 (respectivamente).
Um script ou função shell pode receber qualquer (?) número de argumentos, e estes podem ser obtidos usando $1
, $2
, ... no script / função. Para obter os valores dos parâmetros posicionais acima de 9, é necessário escrever ${10}
, ${11}
etc.
Isso poderia ser usado em um script de shell ou em uma função de shell que leva (pelo menos) dois argumentos de linha de comando, aos quais você gostaria de fornecer valores padrão se eles não fossem fornecidos.
Outra substituição de variável útil nesse caso é ${parameter:?word}
, que exibirá word
como um erro (e sairá do script) se parameter
não estiver definido:
$ cat script.sh
#!/bin/bash
var1="${1:?Must provide command line argument}"
printf 'I got "%s"\n' "$var1"
$ ./script.sh
script.sh: line 3: 1: Must provide command line argument
$ ./script.sh "Hello world"
I got "Hello world"