shell for+if
위치 변수
설명 하 다.
$n
자연수0 은 명령 자 체 를 대표 합 니 다. 0 은 명령 자 체 를 대표 합 니 다. 1 부터 9 번 째 매개 변수 (매개 변수의 값 은 이 명령 을 수행 할 때 9 번 째 부터 9 번 째 매개 변수 (매개 변수의 값 은 이 명령 을 수행 할 때 1 부터 순서대로 입력 합 니 다). 10 이상 의 매개 변 수 는 ${10} 과 같은 대괄호 로 포함 되 어야 합 니 다.
$*
이 변 수 는 명령 행 의 모든 인자 ($0 포함 하지 않 음) 를 대표 합 니 다. 모든 인 자 를 하나의 전체 로 취급 합 니 다. for 순환 을 할 때 한 번 만 순환 합 니 다.
$@
이 변 수 는 명령 행 의 모든 인자 ($0 포함 하지 않 음) 를 의미 합 니 다. 모든 인 자 를 독립 된 개체 로 취급 합 니 다. for 순환 을 할 때 여러 번 순환 할 수 있 습 니 다.
$#
이 변 수 는 명령 행 의 모든 매개 변수의 개 수 를 대표 합 니 다 ($0 은 포함 되 지 않 습 니 다).
위치 매개 변수 변수의 이름과 역할 은 고정 되 어 있 지만 서로 다른 값 을 입력 할 수 있 습 니 다. 위치 매개 변수 변 수 는 사용자 가 명령 을 수행 할 때 들 어 오 는 매개 변수 와 명령 자체 입 니 다. 위치 매개 변 수 는 셸 스 크 립 트 파일 에 주로 사 용 됩 니 다. 명령 과 명령 의 매개 변 수 를 현재 실행 중인 스 크 립 트 에 전달 하 는 역할 을 합 니 다.
다음은 셸 스 크 립 트 파일 canshu. sh 를 작성 하고 실행 함으로써 설명 합 니 다.
vi canshu.sh
canshu. sh 의 내용 은 다음 과 같 습 니 다.
#!/bin/bash
echo $0
echo "\$1 is $1"
echo "\$2 is $2"
for x in "$*"
do
echo $x
done
for y in "$@"
do
echo $y
done
echo $#
이 스 크 립 트 를 실행 하고 두 개의 인 자 를 전달 합 니 다./canshu a b
[root@localhost 12:41 ~/sh]# ./canshu.sh a b
./canshu.sh
$1 is a
$2 is b
a b
a
b
2
요약: 위치 매개 변수 변 수 를 사용 하여 사용자 가 입력 한 인 자 를 받 습 니 다. 한 가지 단점 은 스 크 립 트 가 자신 이 쓴 것 이 아니라면 스 크 립 트 를 실행 할 때 어떤 인 자 를 입력 해 야 할 지 전혀 모 릅 니 다. 스 크 립 트 를 실행 하 는 동시에 인 자 를 입력 하 는 것 이 좋 습 니 다.
미리 정 의 된 변수
$0
현재 프로 세 스 나 스 크 립 트 의 이름 을 저장 합 니 다.
$!
배경 에서 실행 중인 마지막 프로 세 스 의 PID 번호
$?
프로그램 이 종료 되 었 을 때의 대표 (0 은 실행 에 성 공 했 음 을 나타 내 고 0 이 아 닌 것 은 실행 에 실 패 했 음 을 나타 낸다)
$*
모든 매개 변수 내용 을 대표 합 니 다.
$$
현재 프로 세 스 를 나타 내 는 ID 번호
$#
현재 셸 을 나타 내 는 매개 변수 개수
$@
모든 매개 변수 내용 을 하나씩 읽 는 것 을 대표 합 니 다.
용법 예시
vi test.sh
vi test.sh
#!/bin/bash
#This is a test csript
#2018/4/8
echo "script name:"$0
echo "all parameters:"$*
echo "PID of the script:"$$
echo "success of the previous command:"$?
매개 변수 가 실 행 됩 니 다. 다음 결과 입 니 다.
[root@localhost ~]# ./test.sh 11 22 33
script name:./test.sh
all parameters:11 22 33
PID of the script:3177
success of the previous command:0
사용자 정의 변수
[root@localhost ~]# x=3
[root@localhost ~]# y=4
[root@localhost ~]# echo $((x+y))
7
이치 에 맞다 expr arg1 + arg2;
셸 순환 제어 스 크 립 트 예제
[root@localhost ~]# cat for.sh
#!/bin/bash
# for 1-10
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
for((j=1;j<11;j++))
do
echo $j
done
for((x=1;x<11;x++))
do
sum=$((sum+x))
done
echo $sum
결 과 는 인쇄 1 - 10, 구 와 sun = 55 입 니 다.
다음은 간단하게 1 - 100 의 짝수 와
#!/bin/bash
sum=0
flag=0
for((y=1;y<101;y++))
do
temp=$((y%2))
if [[ "$temp" -eq "$flag" ]];then
sum=$((sum+y))
fi
done
echo "sum="$sum
쉽게 이해 하기 위해 판단 절 차 를 세 단계 로 나 누 어 분해 한 결과 sum = 2550 으로 다음 과 같은 형식 으로 쓸 수 있 습 니 다.
#!/bin/bash
for((y=1;y<101;y++))
do
if [[ "$y % 2" -eq "0" ]];then
sum=$((sum+y))
fi
done
echo "sum="$sum
케이스 예 는 다음 과 같다.
#!/bin/bash
#
#
num=1
read -p "press some key,then press return:" key
case $key in
[a-z]|[A-Z])
echo "it is a letter"
;;
[1-9])
echo "it is a number"
;;
*)
echo "it is a function key"
esac
케이스 예시 2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.