shell for+if

3947 단어
위치 매개 변수 설명
위치 변수
설명 하 다.
$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

사용자 정의 변수
  • 변 수 는 구체 적 인 데이터 형식 이 없 기 때문에 변 수 를 정의 할 때 그 유형 을 정의 하지 않 고 직접 할당 하면 사용 할 수 있 습 니 다 (javascript 마찬가지 입 니 다. var)
  • value 가 지정 되 지 않 으 면 변 수 를 빈 문자열 로 할당 합 니 다
  • 변 수 를 정의 한 후 ($변수 명) 를 사용 하여 변수의 값 을 호출 합 니 다
  • 변수 등호 양쪽 에 빈 칸 이 있 으 면 안 됩 니 다
  • 변수 내 ROM 과 특수 문자 (예 를 들 어 빈 칸) 가 있 을 때 작은 따옴표
  • 를 추가 해 야 합 니 다.
  • 변 수 는 대소 문자 에 민감 합 니 다
  • 예시
    [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

    좋은 웹페이지 즐겨찾기