让你十分钟学会shell
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!