for 루프에 $1 - 1 기간을 사용하는 방법

for 루프에 $1 - 1 기간을 사용하는 방법

버블 정렬 알고리즘을 만들기 위해 "sed"를 사용하는 sh 스크립트를 만들려고 합니다.

for 루프를 만드는 방법이 매우 고민됩니다.

for n in $1
do
   echo $n
done

루프 만 생성하도록 for 루프의 본문을 어떻게 변경할 수 있나요 n-1? 나는 이것을 시도했지만 $1-1작동하지 않습니다. 문자열의 일부와 - 1을 인쇄합니다.

답변1

n-1주기마지막 항목을 고려하지 않아야 함을 의미합니다.

다음 접근 방식을 사용하십시오(입력 매개변수가 항상 공백으로 구분된 일련의 하위 문자열이라고 가정).

s=$1

for n in ${s:0:-2}
do 
    echo $n 
done

${s:0:-2}- 마지막 항목을 제외한 모든 항목을 포함하는 항목 조각

    ^  ^
    |  | 
  from to

답변2

사용 for i in "$@" ; do echo $i ; done

$1을 인용할 필요도 없고 그럴 필요도 없습니다.

편집: 제가 오해했습니다. $1-1을 인쇄하려는 경우 echo $(( $i-1 )) i-1번 반복하려고 하면 다음 수정 사항을 사용하십시오.

for ((i=1; i<=3; i++))
{
  echo $x
}

"버블 정렬" 스크립트 전체를 게시하거나 질문을 명확히 하십시오.

관련 정보