ksh 变量声明和循环

ksh 变量声明和循环

我需要工作并理解 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}.

相关内容