1.Shell脚本是什么:
Shell脚本(shell script)是利用shell的功能所写的一个程序,这个程序是使用,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。
更明白地来说,shell script就像早期dos年代的,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了,循环,条件以及等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法。
2.shell和shell脚本的区别:
确切一点说,Shell就是一个,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
3.Shell脚本语法:
- 第一行必须是"#!/bin/sh"
- 它不是注释,"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在;
- 如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell,为了确保脚本能100%正常运行,加上这个声明是最严谨的选择;
- #后面跟的是注释
- 在执行写好的脚本之前,需要给写好的脚本加上可以执行的权限,否则无法执行,加权限的命令是(假设写好的脚本名称为helloworld.sh):chmod +x helloworld.sh
- helloworld.sh
#!/bin/bashecho "Hello world!"
-
定义变量
#!bin/shmy_name="huahao"strTest="hello,$my_name"echo $strTestecho ${strTest}strTest1="abcd"echo ${#strTest1} #echo the length of strTest1strTest2="this is a text"echo ${strTest2:5:9} #is a textstrTest3="this is a fun text,althought i don't konw where are the fun point"echo `expr index "$strTest3" where`
-
读取变量
#!/bin/shread nameecho "hello,$name ,this is shell"
-
if判断
#!/bin/shnum1="ru1oob"num2="runoob"if test $num1 = $num2then echo '两字符串相等!'else echo '两字符串不相等!'fi
-
一些判断的参数
#!/bin/shnum1=100num2=100if test $num1 -eq $num2 #eq nq gt ge lt lethen echo 'equal!'else echo 'not equal!'fistr1="test String"str2="test String"if test $str1 = $str2 # = != z nthen echo 'string equal~'else echo 'string is not equal~'fi
-
数组
array_name=(value0value1value2value3)array_name[4]=value4echo ${array_name[4]}echo ${array_name[0]}echo ${array_name[@]}length=${#array_name[@]}length1=${#array_name[0]}echo length=$lengthecho length1=$length1
-
case
#!/bin/shecho "input some fun num,like 1 to 3: "echo "you number is :"read numcase $num in 1) echo "hahaha" ;; 2) echo "xixixi" ;; 3) echo "hiahiahia" ;; *) echo "hehe,this is not a fun num" ;;esac
-
函数
#!/bin/shfunWithReturn (){echo "input your number,boy"echo "your first number:"read num1echo "your second number:"read num2echo "your two number is $num1 and $num2"return $(($num1+$num2))}echo "-----------------------------"funWithReturnecho "the result is $?"funWithParams(){echo "first param is $1"echo "10th param is ${10}"echo "total number is $#"echo "all params :$*"}funWithParams 1 2 3 4 5 6 7 8 9 10 11
-
for循环
#!/bin/shname="rain man's blog"for loop in $name; do echo $loop;done
-
格式化输出日期
#!bin/shcurdate="`date +%Y%m%d%H%M%S`"echo $curdate
-
退出
#!bin/shexist 0 # 返回0,表示成功exist 1 # 返回1,表示失败
-
系统变量
#!bin/shpwd=$PWD # 当前目录user=$USER # 当前用户echo $pwdecho $user
大概就先写这么多简单的语法吧,想要深入的童鞋可以自行百度查找文档深入学习一下。