Gostaria de ter parâmetros padrão, ou seja, meu exemplo mínimo reproduzível é:
#!/usr/bin/zsh
a=${1:a}
printf 'a: "%s"\n' "${a}"
b=${2:./build}
printf 'b: "%s"\n' "${b}"
Eu esperaria ver, ao executar ./demo.zsh
sem argumentos:
a: "a"
b: "./build"
Em vez disso eu recebo
a: ""
./demo.zsh:4: bad floating point constant
- por que
${1:a}
parece assumir$1
que está definido e não é zero, mas o$a
expandido é uma string vazia? - de onde vem a análise incorreta de ponto flutuante? Se eu substituir
./build
porbuild
, ele reclama sobreb
ser um modificador desconhecido.
Se eu corro ./demo.zsh asdf bar
, eu ganho
a: "/tmp/fasf"
./demo.zsh:4: bad floating point constant
o que, francamente, é ainda mais confuso; /tmp/
de onde vem (é o cwd).