> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > 기본 쉘 구문 소개 및 사용

기본 쉘 구문 소개 및 사용

PHP中文网
풀어 주다: 2017-06-20 11:24:48
원래의
1974명이 탐색했습니다.

1. 변수

1. 변수 명명 규칙: 문자 또는 밑줄로 시작하고 그 뒤에 숫자, 문자 또는 밑줄이 옵니다. 함부로 이름을 지정하지 말고, 변수를 보면 그 의미를 추측할 수 있습니다. 변수 이름

2. 변수 할당 echo ${egon_salary}yuan

20000yuan

4. bash에서는 데이터 유형을 선언할 필요가 없습니다. 기본값은 문자 유형입니다.

2. * / %

[root@bogon ~]# echo $[5%2]

1

2. 할당 연산자: =, +=, -=, *=, /=, %=

[root@bogon ~]# x=10

[root@bogon ~]# ((x+=1))

[root@bogon ~]# echo $x

11

3. 관계 연산자: <,>,!=, ==,>=,<= ,||,&&


관계 연산자는 종종 (( ))와 함께 사용됩니다. []는 동일한 결과를 얻을 수 있지만 (( ))는 파일 유형을 결정할 수 없습니다. 파일 형식을 확인하려면 [], []를 사용해야 합니다. 결과는 테스트 명령과 동일합니다

명령 실행 결과를 확인하려면 $?를 사용하여 결과가 0이면 true를 의미합니다. 0, 이는 거짓을 의미합니다.

[root@bogon ~]# x=10
[root@bogon ~]# ((x> =8))
[root@bogon ~]# echo $?
0

4 .쉘의 계산기

앞서 $[]를 사용하여 몇 가지 간단한 연산을 수행할 수 있다고 말했지만 소수 연산이 포함된 경우에는 쉘에 있는 계산기를 사용해야 합니다

먼저 소프트웨어를 설치해야 합니다. yum install -y bc

[root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l | cut -d'.' -f2)
[root@bogon ~]# echo $ {res}%
33%

5.test 명령 test

 test

   -n str 문자열 길이가 0이 아닙니다

   - z str 문자열 길이가 0입니다


  -b 파일이 존재하며 블록 파일입니다

  - d 파일이 존재하고 디렉토리 파일입니다

  -e 파일이 존재하며 일반 파일입니다

-f 파일이 존재하며 일반 파일입니다

링크 파일의 경우(-L과 동일)

   -s 파일이 존재하며 더 큽니다. 0바이트보다

  파일 간 비교

  file1 -nt file2 file1의 생성 시간이 file2보다 늦었습니다.

  file1 -ot file2 file1의 생성 시간이 file2보다 늦었습니다.

 정수 간 비교

 int1 -ne int2 int1과 int2가 동일하지 않습니다

 int1 -eq int2 int1과 int2가 동일합니다

 int1 -lt int2 int1이 int2보다 작습니다

 int1 -le int2 in t1이 int2보다 작거나 같습니다

   int1 -gt int2 1 int2

  int1 -ge int2 int1이 int2보다 크거나 같습니다

  문자열 비교

  str1 = str2 str1과 str2가 같습니다

  str1! =str2 str1과 str2가 같지 않음

 수식 비교

  expression1 -a 표현식2 수식 1과 수식 2가 모두 true

  expression1 -o 수식2 수식 1 또는 수식 2가 true

6. 테스트:

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
로그인 후 복사

문자열 테스트

[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1
로그인 후 복사

[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
로그인 후 복사

[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
로그인 후 복사

단순히 숫자를 비교하려면 (( ))를 사용하세요.

순수한 숫자가 아닌 비교에는 [[ ] ]

3을 사용하세요. control

1.if Branch

 1) 사용자 계정 비밀번호 확인:

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
로그인 후 복사

#! /bin/bashuser='zhangcan'password='123'read -p 'input your name : ' name
read -p 'input password : ' codeif [ $name = $user -a $code = $password ];then
        echo 'login successful'elseecho 'user or password error'fi~
로그인 후 복사

 2) 학년 결정

#!/bin/bash #根据用户输入的成绩,判断所属档次,并输出给用户read -p 'input your score : ' scoreif  [ $score -ge 90 ];then
    echo '优秀'elif [ $score -ge 70 -a $score -lt 90 ];then
    echo '良好'elif [ $score -ge 60 -a $score -lt 70 ];then
    echo '及格'elif [ $score -lt 60 ];then
    echo '较差'fi
로그인 후 복사

2.while Loop

 동안(조건)

 do
 Command
 done

예: 사용자가 입력하는 파일 형식을 결정합니다
#!/bin/bashwhile :
do
    read -p 'input your file : ' fileif [ -z $file ];thencontinueelsebreakfi
doneif [ -f $file ];then
    echo "$file is regular file"elif [ -b $file ];then
    echo "$file is block file"elif [ -d $file ];then
    echo "$file is directory file"elseecho "$file type unkonw"fi
로그인 후 복사

3.for loop

 for i in {1..10} # in이 반드시 a일 필요는 없습니다. 숫자, 결과를 반환하는 명령이면

 do

 echo $i

 done

예제 1: 서브넷에서 사용할 수 있는 IP를 테스트하는 스크립트 작성
#!/bin/bashfor i in {1..50}
do
    ping -c1 192.168.16.$i &> /dev/null  # -c1表示ping一次if [ $? -ne 0 ];then
        echo "192.168.16.$i successful"echo "192.168.16.$i" >> ~/ipavailable.txt
    fi
done~
로그인 후 복사

예제 2 : /dev

#!/bin/bashdir='/dev'for i in $(ls $dir)
doif [ -h $dir/$i ];then
        ((link+=1))elif [ -f $dir/$i ];then
        (( rfile+=1))elif [ -d $dir/$i ];then
        ((directory+=1))elif [ -b $dir/$i ];then
        (( block+=1 ))else(( typeunknow+=1))
    fi
done
echo 'block' $block
echo 'regular file' $rfile
echo 'directory' $directory
echo 'link' $link
echo 'unknow' $typeunknow
로그인 후 복사

에서 각 파일 형식의 수를 계산합니다. 중첩 루프

예제 1: 99구구단 출력

#!/bin/bashfor ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[$i*$j]"done
    echo
done
로그인 후 복사

예제 2: 로그인 성공 후 사용자 로그인 계정 비밀번호 확인 quit
#!/bin/bashuser=&#39;zhangcan&#39;password=&#39;123&#39;tag=truewhile $tag
do
    read -p &#39;input your name : &#39; name
    read -p &#39;input your password : &#39; codeif [[ $name = $user ]] && [[ $code = $password ]];then
        echo &#39;login successful&#39;while $tag
        do
            read -p &#39;>>: ' cmdif [[ $cmd = 'quit' ]];then
                tag=falseelse$cmd
            fi
        done
    fi
done
로그인 후 복사

       
를 입력하면 명령을 실행하고 종료할 수 있습니다.

위 내용은 기본 쉘 구문 소개 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿