$ 배쉬 < ex1
읽을 수 있음
예1프로그램하고 실행하기
일반적인 형태는 다음과 같습니다.
$ bash 스크립트 이름 [매개변수]
예를 들어:
$ bash ex2 /usr/meng /usr/장
실행 과정은 이전 방법과 동일하지만 이 방법의 장점은 스크립트 이름 뒤에 매개변수를 가질 수 있어 매개변수 값을 프로그램 내의 명령에 전달함으로써 쉘 스크립트가 함수처럼 여러 상황을 처리합니다. 호출 시 특정 문제에 따라 해당 실제 매개변수를 전달할 수 있습니다.
현재 쉘로 시작하는 경우(다음으로 시작)
·의미) 쉘 스크립트를 실행하려면 다음과 같은 간단한 형식을 사용할 수 있습니다.
$ · ex3 [매개변수]
쉘 스크립트의 권한을 실행 가능으로 설정한 다음 프롬프트에서 직접 실행하십시오.
구체적인 방법:
$ chmod a+x ex4$ ./ex4
이 요구 사항은 셸 스크립트 시작 부분에서 스크립트를 실행하는 특정 셸을 지정합니다. 예를 들어
/bin/bash:
#!/bin/bash
Shell은 사용자가 입력한 명령어(스크립트명)를 받아 분석합니다. 파일이 실행 가능으로 표시되어 있지만 컴파일된 프로그램이 아닌 경우 쉘은 해당 파일을 쉘 스크립트로 간주합니다. 쉘은 내용을 읽고 해석하고 실행합니다. 따라서 사용자 관점에서 쉘 스크립트를 실행하는 것은 일반 실행 파일을 실행하는 것과 비슷합니다.
따라서 사용자가 개발한 쉘 스크립트는 명령 검색 경로(보통
/큰 상자,
/usr/빈등), 일반 명령처럼 사용하세요. 이러한 방식으로 자신만의 새로운 명령을 개발할 수 있습니다. 준비된 쉘 스크립트를 반복적으로 사용하려는 경우 이 방법이 더 편리합니다.
명령의 실행 결과를 변수에 할당할 수 있습니다. 명령 대체에는 두 가지 형태가 있습니다. 하나는 역따옴표를 사용하여 명령을 인용하는 것이며 일반적인 형식은 다음과 같습니다.
명령 목록.
예를 들어 현재 작업 디렉터리의 전체 경로 이름을 dir 변수에 저장하고 다음 명령줄을 입력합니다.
$ dir=`pwd`
또 다른 형태는 다음과 같습니다.
$(명령 목록). 위의 명령줄은 다음과 같이 다시 작성할 수도 있습니다.
$dir=$(비밀번호)
세게 때리다1차원 배열만 제공되며 배열의 크기에는 제한이 없습니다. C 언어와 마찬가지로 배열 요소의 첨자는 0부터 시작하여 번호가 매겨집니다. 배열의 요소를 얻으려면 아래 첨자를 사용하십시오. 아래 첨자는 정수 또는 산술 표현식일 수 있으며 해당 값은 0보다 크거나 같아야 합니다. 사용자는 할당문을 사용하여 배열 변수에 값을 할당할 수 있습니다.
배열 요소에 값을 할당하는 일반적인 형식은 다음과 같습니다.
배열 이름 [아래 첨자] = 값,예를 들어:
$ city[0]=베이징$ city[1]=상하이$ city[2]=텐진
또한 사용할 수 있습니다
선언하다이 명령은 배열을 명시적으로 선언하며 일반적인 형식은 다음과 같습니다.
$ 선언 - 배열 이름
배열 요소 값을 읽는 일반적인 형식은 다음과 같습니다.
${배열 이름[아래 첨자]},예를 들어:
$ echo ${city[0]}베이징
배열의 각 요소는 위의 방법을 사용하여 요소별로 할당할 수도 있고 조합하여 할당할 수도 있습니다. 배열을 정의하고 초기값을 할당하는 일반적인 형식은 다음과 같습니다.
배열 이름 = (값 1 값 2 ... 값 n)
각 값은 공백으로 구분됩니다. 예를 들어:
$ A=(쉘 스크립트의 예입니다)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}이것은 예제 스크립트입니다$ echo ${ A[8]}
값표에는 초기값이 7개 있으므로,
에이요소 수도 7개입니다.
A[8]할당된 배열을 초과합니다.
에이range인 경우에는 미리 할당된 값이 없으므로 새로운 요소로 간주됩니다.
배열 요소의 첨자가 지정되지 않은 경우 배열 이름은 다음과 같이 첨자가 0인 배열 요소를 나타냅니다.
도시는 다음과 같습니다
도시[0].
사용
*또는
@첨자를 사용하면 배열의 모든 요소가 대체됩니다.
$ echo ${A[*]}이것은 쉘 스크립트의 예입니다.
$ 에코 ${#A[*]}7
두 숫자의 합을 찾기 위해 셸을 작성하려면 어떻게 구현할 수 있나요? 매개변수 전달을 사용하려면 다음과 같은 스크립트를 작성하세요.
$ cat > addlet sum=$1+$2echo $sum
저장 후 다음을 실행합니다.
$ chmod a+x ./추가$ ./추가 5 1015
5와 10이 전달된 것을 볼 수 있습니다.
$1그리고
$2, 이는 쉘 자체의 사전 설정된 매개변수 순서입니다. 실제로 변수를 먼저 정의한 다음 전달할 수도 있습니다.
예를 들어 위 스크립트를 수정하여 다음을 얻습니다.
sum=$X+$Yecho $sum 하자
다시 실행하세요:
$ X=5 Y=10 ./add15
역시 올바른 결과를 얻을 수 있음을 알 수 있다.
환경 변수를 내보냅니다.
$ 내보내기 opid=True
로그인한 후 적용하려면 바로 추가하면 됩니다.
/etc/프로필또는
~/.bashrc내부에.
통과할 수 있다
읽다예를 들어, 사용자가 값을 입력하고 표시할 때까지 기다리기 위해 변수 값을 읽으려면 다음을 수행하십시오.
$ read -p 값을 입력하십시오: input ; echo 값을 입력하십시오: $input 값을 입력하십시오: 21500 값을 입력하십시오: 21500
일부 중요한 셸 변수는 할당 후에 수정하면 안 되므로 다음과 같이 설정할 수 있습니다.
읽기 전용:
$ oracle_home=/usr/oracle7/bin$ 읽기 전용 oracle_home
문법:
테스트 표현식표현식이 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
먼저, 수치 비교에 사용되는 일반적인 비교 기호는 다음과 같습니다.
-예: -ne !=; -ge >=;
$ 테스트 var1 -gt var2
파일이 읽기 가능, 쓰기 가능, 실행 가능한지 여부는 파일이 일반 파일인지, 디렉터리인지에 따라 다릅니다.
-r; -x;
$ 테스트 -r 파일 이름
문자열의 길이는 0입니다.
-지; 0이 아님:-N,좋다:
$ 테스트 -z s1
문자열이면
s1길이는 0이고 true를 반환합니다.
동일한
s1=s2; 같지 않음s1!=s2
문자열을 비교하는 또 다른 방법이 있습니다(사전순으로 비교할 수 있음).
$ if [[ 'abcde' < 'abcdf' ]]; then echo 예, 예상대로 그렇습니다.
이 명령으로 수행할 수 있는 작업은 다음과 같습니다.
산술 연산:
+ - * / %;논리연산:= ! < <= > >=
좋다:
$ i=5;expr $i+5
게다가,
기원전일부 산술 계산을 수행할 수 있는 명령줄 계산기입니다.
만약에명령 예: 첫 번째 매개변수가 공통 파일 이름이면 파일을 페이지 단위로 인쇄하고, 그렇지 않으면 디렉토리 이름인 경우 디렉토리를 입력하고 디렉토리에 있는 모든 파일을 인쇄합니다. 관련 정보 .
if test -f $1then pr $1>/dev/lp0elif test-d $1then (cd $1;pr *>/dev/lp0)else echo $1은 파일도 디렉토리도 아닙니다fi
사례이 명령은 패턴 일치를 기반으로 하는 다중 분기 명령입니다. 다음은 사용자의 키보드 입력에 따라 다음에 실행될 명령 집합을 결정합니다.
while [ $reply!=y ] && [ $reply!=Y ] # 아래에서 배울 루프 문 do echo n계속하시겠습니까?(Y/N)c read reply # 키보드 케이스 읽기 $replay in ( y|Y) break;; # 루프 종료 (n|N) echo nn종료 중n 종료 0;; *) echo nny 또는 n으로 응답하세요. # 내부 루프로 직접 돌아가서 시작하세요. 계속하다
문법:
while/until 명령 목록 1do 명령 목록 2done
차이점은 전자가 명령 테이블 1을 실행한 후 종료 상태가 0이면 실행한다는 것입니다.
하다다음 명령 목록 2는 시작점으로 돌아가고, 후자가 명령 목록 1을 실행한 후에는 종료 상태가 0이 아닌 경우에만 유사한 작업을 수행합니다. 위와 같은 예입니다.
문법:
문자열 테이블의 변수 이름에 대해 명령 테이블 수행 완료
예:
FILE=test1.c myfile1.f pccn.hfor i in $FILEdo cd ./tmp cp $i $i.old echo $idone 복사됨
이제 Shell에서 함수의 사용법을 살펴보겠습니다. 먼저 예제를 살펴보겠습니다. 함수를 작성한 다음 이를 호출하여 표시합니다.
안녕하세요, 월드!
$ cat > show# 함수 정의 function show{ echo $1$2;}H=Hello,W=World!# 함수를 호출하고 두 매개변수 H 및 Wshow $H $W를 전달합니다.
데모:
$ chmod 770 show$./showHello,World!
뭔가 수상한 걸 보셨나요?
$ 표시 $H $W
실제 매개변수가 포함된 함수 이름 바로 뒤에 올 수 있습니다.
실제 매개변수의 순서는 "가상 매개변수"에 해당합니다.
$1,$2,$3…
참고: 매개변수를 전달하려는 경우 매개변수 중간에 공백이 있으면 어떻게 해야 합니까? 먼저 시도해 보세요.
표시하다
안녕하세요 세계(두 단어 사이에 공백이 있습니다)
함수 표시{ echo $1}HW=Hello Worldshow $HW
만약 직접적으로
$HW 표시, 절대 불가능합니다. 왜냐하면
$1받은 것만
안녕하세요이므로 결과만 표시됩니다.
안녕하세요, 그 이유는 문자열 변수를 사용해야 하기 때문입니다. 그것을 포함하십시오.
관심이 있으시면 계속해서 배워보세요!
다음과 같은 많은 강력한 것들이 당신을 기다리고 있습니다.
자르다,
특급,
sed,
앗등.