我需要工作并理解 ksh 脚本。变量声明的方式与我习惯的方式不同:
STA=${1:-blabla}
我不太明白“1:-”代表什么?是否可以使用此变量声明进行循环,例如:
STA=${1:-blabla blabla2 blabla3}
答案1
${var:-x}
意思是“如果 var 未设置或为空,则将其替换为 x”。因此,这取决于“创建循环”的含义。
如果您通过 split on 来创建循环$IFS
,那么是的,您可以使用它来为循环创建变量。但是,如果这就是您想要做的,我建议您使用 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 [...]
答案2
${1}
是脚本的第一个参数。替换修饰符的:-
解释见手册页ksh
:
${姓名:-单词}
如果姓名已设置且不为 NULL,则被替换;否则,单词被替换。
因此,如果向脚本或函数提供了参数,$STA
则会分配该参数的值。如果没有${1}
,$STA
则将被分配默认值“blabla”。
这不是循环运算符;如果您想循环多个值,则需要${1:-blabla blabla2 blabla3}
.