Shell 스 크 립 트 의 변수 와 전달 매개 변수 1
8584 단어 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
그리고 후속 적 인 거 는 시간 나 면 쓰 도록 하 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.