我想要有标准参数,即我的最小可重复示例是:
#!/usr/bin/zsh
a=${1:a}
printf 'a: "%s"\n' "${a}"
b=${2:./build}
printf 'b: "%s"\n' "${b}"
我希望看到,当./demo.zsh
不带参数运行时:
a: "a"
b: "./build"
相反我得到了
a: ""
./demo.zsh:4: bad floating point constant
- 为什么
${1:a}
似乎假设$1
设置并且非零,但$a
展开后的却是空字符串? - 浮点错误解析从何而来?如果我
./build
用替换build
,它会抱怨它b
是一个未知的修饰符。
如果我跑./demo.zsh asdf bar
,我会得到
a: "/tmp/fasf"
./demo.zsh:4: bad floating point constant
坦率地说,这更令人困惑;它/tmp/
来自哪里(它是 cwd)。