Shell 스 크 립 트 의 변수 와 전달 매개 변수 1

8584 단어 Shell
Shell 스 크 립 트 가 무엇 입 니까?
첫 번 째 셸 스 크 립 트
#!/bin/bash
echo "hello world"

셸 은 응용 프로그램 을 말 합 니 다. 이 프로그램 은 하나의 인터페이스 를 제공 합 니 다. 사용 자 는 이 인터페이스 를 통 해 운영 체제 의 커 널 서 비 스 를 방문 할 수 있 습 니 다.Ken Thompson 의 sh 는 첫 번 째 유 닉 스 셸 이 고 윈도 탐색 기 는 전형 적 인 인터페이스 셸 이다.셸 스 크 립 트 (셸 script) 는 셸 을 위 한 스 크 립 트 프로그램 입 니 다.업계 에서 말 하 는 셸 은 보통 셸 스 크 립 트 를 말 하지만 우 리 는 셸 과 셸 스 크 립 트 가 서로 다른 개념 이라는 것 을 알 아야 하기 때문이다.Shell 프로 그래 밍 은 자바 Scrit, PHP 프로 그래 밍 과 마찬가지 로 코드 를 작성 할 수 있 는 텍스트 편집기 와 실행 중인 스 크 립 트 해석 기 만 있 으 면 됩 니 다.Linux 의 셸 종류 가 많 습 니 다. 흔히 볼 수 있 는 것 은 Bourne Shell (/ usr / bin / sh 또는 / bin / sh) Bourne Again Shell (/ bin / bash) C Shell (/ usr / bin / csh) K Shell (/ usr / bin / ksh) Shell for Root (/ sbin / sh) 입 니 다.#!: 시스템 에 다음 경 로 를 알려 주 는 프로그램 은 이 스 크 립 트 파일 을 설명 하 는 셸 프로그램 입 니 다.
#!/bin/bash
echo "hello World !"

echo 명령 은 창 에서 텍스트 를 출력 하 는 데 사 용 됩 니 다.
Shell 스 크 립 트 를 실행 하 는 방법 은 두 가지 가 있 습 니 다.
1. 실행 가능 한 프로그램 으로
위의 코드 를 test. sh 로 저장 하고 cd 를 해당 디 렉 터 리 chmod + x. / text. sh \ # 스 크 립 트 를 실행 권한 으로 합 니 다. / text. sh \ # 스 크 립 트 를 실행 합 니 다.
2. 해석 기 매개 변수 로
이 실행 방식 은 해석 기 를 직접 실행 하 는 것 입 니 다. 그 매개 변 수 는 셸 스 크 립 트 파일 이름 입 니 다. /bin / sh text. sh / bin / phop text. phop 같은 방식 으로 스 크 립 트 를 실행 합 니 다. 첫 줄 에 해석 기 정 보 를 지정 할 필요 가 없습니다.
셸 변수
your_name = "runoob. com" 변수 이름과 등호 사이 에 빈 칸 이 있어 서 는 안 됩 니 다.이름 은 영문 자모, 숫자, 밑줄 만 사용 할 수 있 고 첫 번 째 문 자 는 숫자 로 시작 할 수 없습니다.중간 에 빈 칸 이 있 으 면 안 되 고 밑줄 () 을 사용 하면 문장 부 호 를 사용 할 수 없습니다.bash 키 워드 를 사용 할 수 없습니다 (help 명령 으로 키 워드 를 볼 수 있 습 니 다)
정 의 된 변 수 를 사용 하려 면 변수 이름 앞 에 $달러 기 호 를 추가 하면 됩 니 다. 예 를 들 어
your_name="name1"
echo $name1
echo ${name1}

변수 이름 밖의 괄호 는 선택 할 수 있 습 니 다. 추가 하 든 안 하 든 상관 없습니다. 괄호 를 넣 는 것 은 해석 기 가 변수의 경 계 를 식별 하 는 데 도움 을 주기 위해 서 입 니 다.
정 의 된 변 수 는 다음 과 같이 다시 정의 할 수 있 습 니 다.
your_name="aa"
echo ${your_name}
your_name="bb"
echo ${your_name}

읽 기 전용 변수
readonly 명령 을 사용 하면 변 수 를 읽 기 전용 변수 로 정의 할 수 있 으 며, 읽 기 전용 변수의 값 은 변경 할 수 없습니다.
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
myUrl="http://www.runoob.com"
         :
/bin/sh:MAME:This variable is readonly.
your_name:readonly variable

변수 삭제
unset 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.
unset variable_name 

변수 가 삭 제 된 후 다시 사용 할 수 없습니다.unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.실례
#!/bin/bash
myUrl="http://www.google.com"
unset myUrl
echo ${myUrl}

위 예 는 출력 이 없습니다.
변수의 종류
셸 을 실행 할 때 세 가지 변수 가 동시에 존재 합 니 다. 1) 부분 변수 부분 변 수 는 스 크 립 트 나 명령 에서 정 의 됩 니 다. 현재 셸 인 스 턴 스 에서 만 유효 합 니 다. 다른 셸 이 시작 하 는 프로그램 은 부분 변수 2) 환경 변수 모든 프로그램 에 접근 할 수 없습니다. 셸 이 시작 하 는 프로그램 을 포함 하여 환경 변 수 를 방문 할 수 있 습 니 다. 일부 프로그램 은 환경 변 수 를 사용 하여 정상 적 인 운행 을 확보 해 야 합 니 다.필요 할 때 셸 스 크 립 트 도 환경 변 수 를 정의 할 수 있 습 니 다.3) 셸 변수 셸 변 수 는 셸 프로그램 이 설정 한 특수 변수 입 니 다.셸 변수 중 일 부 는 환경 변수 이 고 일 부 는 부분 변수 입 니 다. 이런 변 수 는 셸 의 정상 적 인 운행 을 보장 합 니 다.
셸 문자열
문자열 은 셸 프로 그래 밍 에서 가장 많이 사용 되 는 데이터 형식 (자주 사용 되 는 데이터 형식, 숫자, 문자열) 문자열 로 더 블 따옴표 도 사용 할 수 있 고 따옴표 도 사용 하지 않 아 도 됩 니 다.작은 따옴표 의 차 이 는 PHP 와 유사 하 다.
작은 따옴표
str='this is a string'

작은 따옴표 의 제한: 작은 따옴표 에 있 는 모든 문 자 는 그대로 출력 되 며, 작은 따옴표 문자열 의 변 수 는 유효 하지 않 습 니 다.작은 따옴표 문자열 에는 하나의 작은 따옴표 가 나타 나 지 않 지만 문자열 로 쌍 을 지어 사용 할 수 있 습 니 다.
작은 따옴표
your_name=‘runoob’
str="hello,I konw you are \"$your_name\"! 
" # \ " echo -e $str

출력 결과:
hello,I know you are "runoob"!

더 블 따옴표 의 장점: 더 블 따옴표 에 변수 가 있 을 수 있 습 니 다. 더 블 따옴표 에 전의 문자 가 나타 날 수 있 습 니 다.
맞 춤 문자열
your_name="runoob"
#       
greeting="hello,"$your_name" !"
greeting_1="hello,${your_name} !"
echo $greeting $greeting_1

#       
greeting_2='hello,'$your_name' !'
greeting_3='hello,${your_name} !'
echo $greeting_2 $greeting_3

출력 결 과 는:
hello,runoob ! hello,runoob !
hello,runoob ! hello,${your_name} !

문자열 길이 가 져 오기
string="abcd"
echo ${#string} #  4

하위 문자열 추출
다음 인 스 턴 스 는 문자열 의 두 번 째 문자 부터 4 개의 문 자 를 캡 처 합 니 다.
string="runoob is a great site"
echo ${string:1:4} #  unoo

하위 문자열 찾기
문자 i 나 o 의 위 치 를 찾 습 니 다.
string="runoob is a great site"
echo `expr index "$string" io` #  4     o   


string="irunoob is a great site"
echo `expr index "$string" io` #  1     i   

특히 하위 문자열 의 '작은 따옴표 가 아 닌 작은 따옴표' 를 찾 는 것 에 주의 하 세 요.
셸 배열
bash 는 1 차원 배열 (다 차원 배열 은 지원 되 지 않 음) 을 지원 하 며 배열 의 크기 를 제한 하지 않 습 니 다.C 언어 와 유사 합 니 다. 배열 요소 의 아래 표 지 는 0 에서 번 호 를 시작 합 니 다. 배열 의 요 소 를 가 져 오 려 면 아래 표 지 를 이용 해 야 합 니 다. 아래 표 지 는 정수 나 산술 표현 식 일 수 있 습 니 다. 그 값 은 0 보다 크 거나 같 아야 합 니 다.
정의 배열
셸 에 서 는 괄호 로 배열 을 표시 하고 배열 요 소 는 '빈 칸' 기호 로 나 뉜 다.배열 의 일반적인 형식 을 정의 합 니 다:
   =( 1  2 ...  n)

예 를 들 면:
array_name=(value0 value1 value2 value3)
  
array_name=(
value0
value1
value2
value3
)

배열 의 각 분량 을 따로 정의 할 수 있 습 니 다.
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

연속 적 인 하 표를 사용 하지 않 아 도 되 고 하 표 의 범 위 는 제한 이 없다.
읽 기 배열
  
${   [  ]}

예 를 들 면:
valuen=${array_name[n]}
@ 기 호 를 사용 하여 배열 의 모든 요 소 를 얻 을 수 있 습 니 다. 예 를 들 어:
   echo ${array_name[@]}

배열 의 길이 가 져 오기
배열 길 이 를 가 져 오 는 방법 은 문자열 길 이 를 가 져 오 는 방법 과 같 습 니 다. 예 를 들 어:
#         
length=${#array_name[@]}
#  
length=${#array_name[*]}
#           
lengthn=${#array_name[n]}

셸 주석# 로 시작 하 는 줄 은 주석 이 고 해석 기 가 무시 할 수 있 습 니 다.줄 마다 \ # 번 호 를 추가 하여 여러 줄 주석 을 설정 합 니 다.
여러 줄 주석 은 다음 과 같은 형식 을 사용 할 수 있다.
:<

EOF 는 다른 기호 도 사용 할 수 있 습 니 다.
여러 줄 주석 은 다음 과 같은 형식 을 사용 할 수 있다.
:<

여러 줄 주석 은 다음 과 같은 형식 을 사용 할 수 있 습 니 다. < 주석 내용... 주석 내용...!
==========================================================
셸 전달 매개 변수
셸 스 크 립 트 를 실행 할 때 스 크 립 트 에 인 자 를 전달 할 수 있 습 니 다. 스 크 립 트 에서 가 져 온 형식 은 $n 입 니 다.n 은 하나의 숫자 1 을 스 크 립 트 를 실행 하 는 첫 번 째 매개 변수 로 하고, 2 는 스 크 립 트 를 실행 하 는 두 번 째 매개 변수 로 유추 합 니 다.
인 스 턴 스 아래 인 스 턴 스 는 스 크 립 트 에 세 개의 인 자 를 전달 하고 각각 출력 합 니 다. 그 중에서 $0 은 실 행 된 파일 이름 입 니 다.
#!/bin/bash
echo "shell      ";
echo "      : $0";
echo "      : $1";
echo "      : $2";
echo "      : $3";

스 크 립 트 에 실행 가능 한 권한 을 설정 하고 스 크 립 트 를 실행 합 니 다.그 출력 결 과 는 다음 과 같다.
$ chmod +x text.sh
$ ./text.sh 1 2 3
shell       !
      : ./text.sh
      : 1
      : 2
      : 3
$# 걸음 에 전 달 된 매개 변수 개수$* 스 크 립 트 에 전 달 된 모든 인 자 를 하나의 문자열 로 표시 합 니 다.예 를 들 어 "$*" '괄호 로 묶 은 경우 "$1 $2 ... $n" 의 형식 으로 모든 인 자 를 출력 합 니 다.$$ 스 크 립 트 가 실행 중인 현재 프로 세 스 ID 번호$@$* 과 같 지만 사용 할 때 따옴표 를 추가 하고 따옴표 에서 모든 인 자 를 되 돌려 줍 니 다. 예 를 들 어 "$@" 로 묶 은 경우 " 의 형식 으로 모든 인 자 를 출력 합 니 다."$1" "$2"..."$n" 셸 이 사용 하 는 현재 옵션 을 표시 합 니 다. $- 명령 기능 과 같 습 니 다.set 마지막 명령 의 종료 상 태 를 표시 합 니 다. 0 은 오류 가 없 음 을 표시 하고 다른 값 은 오류 가 있 음 을 표시 합 니 다.
#!bin/bash
echo "Shell       ";
echo "      :$1";
echo "     :$#";
echo "              :$*";

스 크 립 트 를 실행 합 니 다. 출력 결 과 는 다음 과 같 습 니 다.
$ chmod +x text.sh
$ ./text.sh 1 2 3
Shell       !
      1:1
     :3
              :1 2 3 
$?$* 의 차이 점: 모든 매개 변 수 를 참조 합 니 다. 차이 점: 작은 따옴표 에 만 나타 납 니 다. 스 크 립 트 가 실 행 될 때 세 개의 매개 변수 $@ 를 썼 다 고 가정 하면 '*' 등가 와 1 ,2,3, (하나의 매개 변 수 를 전달), "1 2 3" 등 가 는 "@" (세 개의 매개 변 수 를 전달) 와 같 습 니 다.
#!/bin/bash

echo "-- \$*  ---"
for i in "$*"; do
	echo $i
done

echo "-- \$@  ---"
for i in "$@"; do
	echo $i
done

스 크 립 트 를 실행 합 니 다. 출력 결 과 는 다음 과 같 습 니 다.
$ chmod +x test.sh
$ ./test.sh 1 2 3
--$*  ---
1 2 3 
--$@  ---
1
2
3

그리고 후속 적 인 거 는 시간 나 면 쓰 도록 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기