1、先介绍下shell的工作原理
  Shell可以被称作是脚本语言,因为它本身是不需要编译的,而是通过解释器解释之后再编译执行,和传统语言相比多了解释的过程所以效率会略差于传统的直接编译的语言。
  这是shell脚本简单明了的语法,给很多码农尤其是运维还是带来不少好处,尤其是和Python的结合,在大数据方面可谓是一骑绝尘。

2、

  Lesson-01  第一个简单的shell

1 #!/usr/bin/bash
2 echo 'Hello world'
3
4 chmod +x a.sh
5 sh a.sh
6
7 output:
8 Hello world

  Lesson-02  Shell中的变量

1 #!/usr/bin/bash
2 myvariable='hello world' #注意没有空格
3 mynum=100
4 echo $myvariable
5 echo ${myvariable}
6 echo $mynum
7
8 output:
9 hello world
10 hello world
11 100

  Lesson-03 Shell中的简单的运算

1 #!/usr/bin/bash
2 a=3
3 b=5
4 val=`expr $a + $b`
5 echo "Total value:$val"
6
7 val=`expr $a - $b`
8 echo "Total value:$val"
9
10 val=`expr $a \* $b`
11 echo "Total value:$val"
12
13 val=`expr $a / $b`
14 echo "Total value:$val"
15
16 val=`expr $a % $b`
17 echo "Total value:$val"
18
19 output:
20 Total value:8
21 Total value:-2
22 Total value:15
23 Total value:0
24 Total value:3

  Lesson-04 Shell中的比较运算符

1 #!/usr/bin/bash
2 a=2
3 b=2
4 c=3
5
6 if [ $a == $b ]
7 then
8 echo "a is equal to b"
9 fi
10
11
12 if [ $a != $c ]
13 then
14 echo "a is not equal to b"
15 fi
16
17 output:
18 a is equal to b
19 a is not equal to b

  Lesson-05 Shell中的关系运算符

1 #!/usr/bin/bash
2
3 a=10
4 b=10
5 c=30
6
7 if [ $a -eq $b ]
8 then
9 echo "a is eq b"
10 else
11 echo "false"
12 fi
13
14 if [ $a -ne $b ]
15 then
16 echo "true"
17 else
18 echo "false"
19 fi
20
21 if [ $a -gt $b ]
22 then
23 echo "a is gt b"
24 else
25 echo "a is not gt b"
26 fi
27
28 if [ $a -ge $b ]
29 then
30 echo "true"
31 else
32 echo "false"
33 fi
34
35 output:
36 a is eq b
37 false
38 a is not gt b
39 true

  Lesson-06 Shell中的字符串

1 #!/usr/bin/bash
2
3 h="hello"
4 w="world"
5 str=$h" "$w
6 echo $str
7
8 echo ${str:0:5}
9 echo ${str:1}
10
11 output:
12 ello world
13 hello
14 ello world

  Lesson-07 Shell中的数组

1 #!/usr/bin/bash
2
3 array=(11 12 13 14 15)
4 array2=(aa bb cc dd ee)
5 value=${array[3]}
6 echo $value
7
8 #获取数组长度
9 length=${#array[*]}
10 echo $length
11
12 #数组循环
13 for cname in ${array2[@]}
14 do
15 echo $cname
16 done
17
18 output:
19 14
20 5
21 aa
22 bb
23 cc
24 dd
25 ee

  Lesson-08 Shell中的test命令

1 -e file #文件存在则返回true
2 -f file #文件存在可读则返回true
3 -w file #文件存在可写则返回true
4 -x file #文件存在可执行则返回true
5 -s file #文件存在并不为空则返回true
6 -S file #文件存在并为空则返回true
7 -d file #文件目录存在则返回true
8
9 #!/usr/bin/bash
10
11 filename=aa.txt
12 echo $filename
13
14 if test -e $filename
15 then
16 echo "file is exist"
17 else
18 echo "file is not exist"
19 fi
20
21 if test -r $filename
22 then
23 echo "the file is readable"
24 else
25 echo "the file is not readable"
26 fi
27
28 if test -s $filename
29 then
30 echo "the file is not empty"
31 else
32 echo "the file is empty"
33 fi

  Lesson-09 Shell中的for循环

1 #!/usr/bin/bash
2 for i in {1..5}
3 do
4 echo $i
5 done
6
7
8 for i in {12 15 17}
9 do
10 echo $i
11 done
12
13 for file in ./*
14 do
15 echo $file
16 done
17
18 output:
19 1
20 2
21 3
22 4
23 5
24 12
25 15
26 17
27 ./a.sh
28 ./aa.txt
29 ./b.sh
30 ./c.sh
31 ./d.sh
32 ./e.sh
33 ./f.sh
34 ./g.sh
35 ./h.sh
36 ./ii.sh

 

  Lesson-10 Shell中的while循环

1 #!/usr/bin/bash
2 count=0
3 while [ $count -lt 5 ]
4 do
5 count=`expr $count + 1`
6 echo $count
7 done
8
9 output:
10 1
11 2
12 3
13 4
14 5

  Lesson-11 Shell中的函数

1 #!/usr/bin/bash
2
3 #$0为自己 pp.sh
4 #$1为第一个参数
5 ##$为参数个数
6
7 num1=$1
8 num2=$2
9 function AddFun
10 {
11 #read -p "Enter a number:" num1
12 #read -p "Enter another number:" num2
13 echo $[ $num1 + $num2 ]
14 }
15 result=`AddFun`
16 echo "The Result is :$result"
17
18 sh pp.sh 2 3
19 output:
20 The Result is :5

  Lesson-12 Shell中其他相关操作

1 覆盖重定向 sh aa.sh > aa.txt
2 追加重定向 sh bb.sh >> bb.txt
3
4
5 $0 :即命令本身
6 $1 :第一个参数.
7 $2, $3, $4 ... :第2、3、4个参数,依次类推。
8 $# 参数的个数,不包括命令本身
9 $@ :参数本身的列表,也不包括命令本身
10 $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。

OVER!
本文为本人原创,转载时请注明出处,Thanks!