버블 정렬 알고리즘을 만들기 위해 "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
}
"버블 정렬" 스크립트 전체를 게시하거나 질문을 명확히 하십시오.