리눅스 쉘 스크립트의 기초 연구에 대한 이전 기사에서는 리눅스 쉘 스크립트의 제어 프로세스의 if, select 및 case에 대해 이야기했습니다. 여기서는 Linux 쉘 스크립트의 제어 프로세스에 대한 루프와 인용 부호를 소개하겠습니다. Linux 쉘 스크립트에는 제어 프로세스에 대한 추가 내용이 있으며 일부 내용은 here 문서에 관한 것입니다.
4.loop
루프 표현식:
while ...; do .... done
while-loop는 표현식 테스트가 true일 때까지 실행됩니다. 테스트하는 표현식이 true인 동안 실행됩니다.
루프를 벗어나는 데 "break" 키워드가 사용됩니다. "continue" 키워드는 나머지 부분을 실행하지 않고 다음 루프로 직접 점프하는 데 사용됩니다.
for 루프 표현식은 문자열(공백으로 구분된 문자열) 목록을 보고 이를 변수에 할당합니다.
for var in ....; do .... done
다음 예에서는 ABC가 각각 화면에 인쇄됩니다. 위:
#!/bin/sh for var in A B C ; do echo "var is $var" done
다음은 RPM 패키지의 일부 통계 정보를 인쇄하는 기능을 하는 더 유용한 스크립트 showrpm입니다.
#!/bin/sh # list a content summary of a number of RPM packages # USAGE: showrpm rpmfile1 rpmfile2 ... # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm for rpmpackage in $*; do if [ -r "$rpmpackage" ];then echo "=============== $rpmpackage ==============" rpm -qi -p $rpmpackage else echo "ERROR: cannot read file $rpmpackage" fi done
두 번째 특별한 스크립트가 여기에 나타납니다. $* 변수에는 입력된 모든 명령줄 매개변수의 값이 포함됩니다.
showrpm openssh.rpm w3m.rpm webgrep.rpm
이때 $*에는 openssh.rpm, w3m.rpm 및 webgrep.rpm이라는 3개의 문자열이 포함되어 있습니다.
인용문
프로그램은 매개변수를 프로그램에 전달하기 전에 와일드카드와 변수를 확장합니다. 여기서 소위 확장이란 프로그램이 와일드카드 문자(예: *)를 적절한 파일 이름으로 바꾸고 변수를 변수 값으로 바꾸는 것을 의미합니다. 프로그램이 이러한 대체를 수행하는 것을 방지하려면 따옴표를 사용할 수 있습니다. 현재 디렉토리에 두 개의 jpg 파일, mail.jpg 및 tux.jpg가 있다고 가정하고 예를 살펴보겠습니다.
1.2 SHELL 스크립트를 컴파일합니다
#ch#!/bin/sh mod +x filename
cho *.jpg ∪ 천천히 螅谛果暙耄?./filename하여 스크립트를 실행합니다.
이렇게 하면 "mail.jpg tux.jpg"의 결과가 인쇄됩니다.
따옴표(단일 및 이중)는 이러한 와일드카드 확장을 방지합니다.
#!/bin/sh echo "*.jpg" echo '*.jpg'
이렇게 하면 "*.jpg"가 두 번 인쇄됩니다.
작은따옴표는 더 제한적입니다. 변수 확장을 방지합니다. 큰따옴표는 와일드카드 확장을 방지하지만 변수 확장은 허용합니다.
#!/bin/sh echo $SHELL echo "$SHELL" echo '$SHELL'
실행 결과는 다음과 같습니다.
/bin/bash /bin/bash $SHELL
마지막으로 이 확장을 방지하는 또 다른 방법은 이스케이프 문자(백슬래시)를 사용하는 것입니다.
echo *.jpg echo $SHELL
결과는 다음과 같습니다.
*.jpg $SHELL
여기서 제어 프로세스의 내용은 여기 문서에 약간 남아 있으며 이를 분석하겠습니다. 다음번.
위 내용은 리눅스 쉘 스크립트 기본 학습(IV)에 대한 자세한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!