ksh 변수 선언 및 반복

ksh 변수 선언 및 반복

ksh 스크립트를 작업하고 이해해야 합니다. 변수가 선언되는 방식은 제가 익숙했던 방식과 다릅니다.

STA=${1:-blabla}

"1:-"이 무엇을 의미하는지 잘 모르겠습니다. 다음과 같은 루프에 이 변수 ​​선언을 사용할 수 있습니까?

STA=${1:-blabla blabla2 blabla3}

답변1

${var:-x}이는 "var가 설정되지 않았거나 비어 있으면 x로 바꾸십시오"를 의미합니다. 따라서 "루프 생성"의 의미에 따라 다릅니다.

분할하여 루프를 생성하는 경우 $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}.

관련 정보