ksh declaração de variável e loop

0

Eu preciso trabalhar e entender um script ksh. A declaração da variável é feita de uma maneira diferente a que estou acostumado:

STA=${1:-blabla}

Eu realmente não entendo o que significa o "1: -"? É possível fazer um loop com essa declaração de variável, como:

STA=${1:-blabla blabla2 blabla3}
    
por steve 13.11.2017 / 13:06

2 respostas

2

${var:-x} significa "se var não estiver definido ou vazio, substitua-o por x". Como tal, depende do que você quer dizer com "mak [ing] um loop".

Se você fizer um loop dividindo em $IFS , então sim, você pode usar isso para criar uma variável para um loop. No entanto, se é isso que você quer fazer, recomendo usar uma matriz ksh:

if [ "$#" -eq 0 ]; then
  set -A sta blabla blabla2 blabla3 # ksh88/pdksh/mksh/ksh93
  sta=(blabla blabla2 blabla3)      # ksh93/mksh
else
  sta=("$@") # use the positional parameters if provided
fi

for x in "${sta[@]}"; do [...]
    
por 13.11.2017 / 13:24
1

${1} é o primeiro argumento do script. O modificador de substituição :- é explicado na página de manual de ksh :

${name:-word}

If name is set and not NULL, it is substituted; otherwise, word is substituted.

Assim, se um argumento é fornecido ao seu script ou função, $STA será atribuído o valor desse argumento. Se não houver ${1} , então $STA receberá o valor padrão "blabla".

Este não é um operador de loop; Se você quiser passar por cima de vários valores, precisará de uma sintaxe diferente de ${1:-blabla blabla2 blabla3} .

    
por 13.11.2017 / 13:24

Tags