Shell 프로 그래 밍 | 스 크 립 트 파라미터 와 상호작용 및 일반적인 문제
스 크 립 트 에 매개 변수 전달
Shell 스 크 립 트 를 실행 할 때 파 라 메 터 를 가 져 올 수 있 습 니 다. Shell 스 크 립 트 에 변수 가 있 습 니 다.이러한 변수의 이름 은 매우 특별 하 다. 각각 0, 1, 2, 3. 위치 변수 라 고 불 린 다.
위치 변 수 는 0 에서 시작 합 니 다. 그 중에서 0 변 수 는 실제 스 크 립 트 의 이름 을 저장 하고 1 변 수 는 스 크 립 트 프로그램의 첫 번 째 매개 변수 에 대응 하 며 순서대로 유추 합 니 다.다른 변수 와 마찬가지 로 셸 에서 '$' 기 호 를 통 해 위치 변수의 값 을 참조 할 수 있 습 니 다.
[root@localhost 20190105]# vi paral.sh
#!/bin/bash
#
echo 'The script name is '$0
# 1
echo 'The 1th parameter is '$1
# 2
echo 'The 2th parameter is '$2
# 3
echo 'The 3th parameter is '$3
# 4
echo 'The 4th parameter is '$4
# 5
echo 'The 5th parameter is '$5
# 6
echo 'The 6th parameter is '$6
# 7
echo 'The 7th parameter is '$7
# 8
echo 'The 8th parameter is '$8
# 9
echo 'The 9th parameter is '$9
[root@localhost 20190105]# ./paral.sh Ni hao , Nice to meet you !
The script name is ./paral.sh
The 1th parameter is Ni
The 2th parameter is hao
The 3th parameter is ,
The 4th parameter is Nice
The 5th parameter is to
The 6th parameter is meet
The 7th parameter is you
The 8th parameter is !
The 9th parameter is //
[root@localhost 20190105]# 사용자 상호작용
read 명령 을 사용 하면 키보드 에서 데 이 터 를 읽 고 지정 한 변 수 를 부여 하여 Shell 스 크 립 트 에서 사용자 와 의 데이터 상호작용 을 실현 할 수 있 습 니 다.
read 명령 형식
read 1 [ 2...] read 명령 은 키보드 에서 여러 변수의 값 을 읽 을 수 있 습 니 다. 사용자 가 데 이 터 를 입력 할 때 데이터 간 에 빈 칸 이나 Tab 키 로 구 분 됩 니 다.
만약 변수 개수 가 입력 한 데이터 개수 와 같다 면 순서대로 값 을 대응한다.
만약 에 변수 개수 가 입력 한 데이터 개수 보다 크 면 왼쪽 에서 오른쪽으로 대응 하 는 할당 값 입 니 다.데이터 가 없 으 면 대응 하 는 변 수 를 비어 있 습 니 다.
만약 변수 개수 가 입력 한 데이터 개수 보다 적 으 면 왼쪽 에서 오른쪽으로 대응 하 는 값 을 부여 하고 마지막 변 수 는 남 은 모든 데 이 터 를 부여 합 니 다.
read 명령 을 통 해 키보드 에 입력 한 데 이 터 를 읽 어 변수 에 저장 하고 변수 값 을 화면 에 표시 합 니 다. 사용자 가 exit 를 입력 할 때 프로그램 을 끝 냅 니 다.
[root@localhost 20190105]# vi read1.sh
#!/bin/bash
#
input1='' # input1
input2='' # input2
input3='' # input3
input4='' # input4
#until , input1 exit
until [ "$input1" = exit ]
do
echo 'Please input the values:'
#
read input1 input2 input3 input4
# exit
if [ "$input1" != exit ]
then
echo 'input1: '$input1 # input1
echo 'input2: '$input2 # input2
echo 'input3: '$input3 # input3
echo 'input4: '$input4 # input4
echo
# exit
else
echo 'Exit the script.'
fi
done
[root@localhost 20190105]# chmod +x read1.sh
[root@localhost 20190105]# ./read1.sh
Please input the values:
How do you do //
input1: How
input2: do
input3: you
input4: do
Please input the values:
Welcome to beijing //
input1: Welcome
input2: to
input3: beijing
input4:
Please input the values:
let's go //
input1: let's
input2: go
input3:
input4:
Please input the values:
Nice to meet you,too! //
input1: Nice
input2: to
input3: meet
input4: you,too!
Please input the values: //
exit
Exit the script.
[root@localhost 20190105]# 실행 결 과 를 보면 알 수 있 습 니 다.
특수 변수
특수 변수 및 설명
변수 이름
설명 하 다.
$#
스 크 립 트 에 전 달 된 매개 변수 개수
$*
스 크 립 트 에 전 달 된 모든 인자 의 값
$@
$* 와 같 음
$$
스 크 립 트 실행 에 대응 하 는 프로 세 스 번호
$!
배경 에서 실행 중인 마지막 프로 세 스 의 프로 세 스 번호
$-
Shell 에서 사용 할 현재 옵션 보이 기
$?
명령 의 종료 상 태 를 표시 합 니 다. 0: 정확 합 니 다. 1: 오류 입 니 다.
[root@localhost 20190105]# vi vall.sh
#!/bin/bash
echo 'The value of $# is: '$# // $#
echo 'The value of $* is: '$* // $*
echo 'The value of $@ is: '$@ // $@
echo 'The value of $$ is: '$$ // $$
echo 'The value of $! is: '$! // $!
echo 'The value of $- is: '$- // $-
echo 'The value of $? is: '$? // $?
[root@localhost 20190105]# ./vall.sh how do you do
The value of $# is: 4 // 4
The value of $* is: how do you do // how do you do
The value of $@ is: how do you do // how do you do
The value of $$ is: 9040 // 9040
The value of $! is: //
The value of $- is: hB // hB
The value of $? is: 0 // 0
[root@localhost 20190105]# 질문
> /dev/null 명령 의 오류 출력 차단
2> /dev/null 명령 의 정상 및 오류 출력 차단
> /dev/null 2> /dev/null 예 를 들 어 셸 코드 에서 grep 명령 을 사용 하여 파일 에 키워드 가 있 는 지 찾 으 려 면 화면 grep 명령 의 출력 을 원 합 니 다.
if grep jack /etc/passwd > /dev/null
then
echo "jack found"
fi /etc/passwd 파일 에 jack 키워드 정보 가 있 으 면 jack found 가 표시 되 지만 grep 명령 의 실행 결 과 는 출력 되 지 않 습 니 다.
두 개의 파이프 부 호 를 사용 하여 ps, grep, awk 명령 을 조합 합 니 다.
[root@localhost ~]# ps -ef | grep sshd | awk '{print $2}'
4478
12821
22028 한 줄 코드 에 여러 명령 을 조합 하여 읽 기 어렵다.Shell 은 한 줄 의 코드 를 여러 줄 로 나 누 어 작성 할 수 있 는 특수 문 자 를 제공 합 니 다.
[root@localhost ~]# ps -ef | \
> grep ssh | \
> awk '{print $2}'
4478
12821
23375
[root@localhost ~]# 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.