Home > Operation and Maintenance > Linux Operation and Maintenance > Introduction and use of basic shell syntax

Introduction and use of basic shell syntax

PHP中文网
Release: 2017-06-20 11:24:48
Original
1974 people have browsed it

1. Variables

1. Naming rules for variables: start with a letter or underscore, followed by numbers, letters or underscores. It is best not to name the variable casually, but to be able to guess its meaning when you see the variable name.

2. Variable assignment: x=100

echo $x

Delete variable: unset x

3. Use braces ## to define the boundaries of variable names

#[root@bogon ~]# egon_salary=20000

[root@bogon ~]# echo ${egon_salary}yuan
20000yuan

4. There is no need to declare the data type in bash, the default They are all character type

2. Operators

1. Arithmetic operators: + - * / %

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

1

2. Assignment operators: =, +=, -=, *=, /=, %=

[root@bogon ~]# x=10

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

3. Relational operators: <,>, !=,==,>=,<=,||,&&

relational operators are often used with (( )). [] can achieve the same result, but (( )) cannot judge To determine the type of a file, [] must be used to determine the file type. [] has the same effect as the test command.

Use $? to view the command execution result. A result of 0 represents true, and non-0 represents false.

[root@bogon ~]# x=10

[root@bogon ~]# ((x>=8))
[root@bogon ~]# echo $?
0
4. Calculator in the shell

I said before that you can use $[] to perform some simple operations, but if it involves decimal operations, you need to use the calculator in the shell

First install the software, yum install -y bc

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

[root@bogon ~]# echo ${res}%
33%

5.test command test

 test

-n str The string length is not zero

-z str The string length is zero

-b The file exists and is a block file

-d The file exists and is a block file Directory file

 -e file exists

 -f file exists and is a normal file

 -h file exists and is a link file (same as -L)

-s file exists and is greater than zero bytes

Comparison between files

file1 -nt file2 file1 was created later than file2

file1 -ot file2 file1 The creation time is earlier than file2

Comparison between integers

int1 -ne int2 int1 and int2 are not equal

int1 -eq int2 int1 and int2 are equal

int1 -lt int2 int1 is less than int2

int1 -le int2 int1 is less than or equal to int2

int1 -gt int2 int1 is greater than int2

int1 -ge int2 int1 is greater than or equal to int2

Comparison between strings

str1 = str2 str1 and str2 are equal

str1! =str2 str1 and str2 are not equal

Comparison between expressions

Expression1 -a expression2 Expression1 and expression2 are both true

expression1 -o expression2 expression Formula 1 or Expression 2 is true

6. Test example

Numeric comparison test:

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
Copy after login
String test

[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1
Copy after login
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
Copy after login
[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
Copy after login
To compare pure numbers, use (( ))

For comparisons other than pure numbers, use [[ ]]

3. Process control

1.if branch

 1) Verify user account password:

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
Copy after login
#! /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~
Copy after login
 2) Determine the grade

#!/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
Copy after login
2.while loop

while (Condition)

 do

 Command

done

Example: Determine what type of file the user inputs

#!/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
Copy after login
3.for loop

for i in {1..10} #in does not have to be followed by a number, as long as it is a command that returns a result

do

echo $i

done

Example 1: Write a script to test the IPs that can be used in the subnet

#!/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~
Copy after login
Example 2: Count the number of each file type under /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
Copy after login
4. Nested loops

Example 1: Output a multiplication table

#!/bin/bashfor ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[$i*$j]"done
    echo
done
Copy after login
Example 2: Verify the user's login account and password. After successful login, you can execute the command and exit when you enter 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
Copy after login
      

The above is the detailed content of Introduction and use of basic shell syntax. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template