Shell编程
2014-07-25 17:20
393 查看
上一篇简单介绍了一些Shell的一些知识。这一篇讲述Shell编程的知识。只要对linux的命令很熟悉,在稍具一些程序语言能力,学习Shell编程是可以速成的。Shell内置的功能与程序控制语句:if,case等都很简单。通过大量动手操作,仔细了解每种语句的用法,相信足可以成为Shell编程高手。
干货送上,先来一段代码例程:(第一行前面的“#”号不是注释, “#!”而且出现在第一行代表通知系统用/bin/sh来执行下面的程序。)
以“#”开头的行代表注释。字符串前面加”$”代表它是一个变量,如果”$”后面是数字,代表第几个参数。$1代表第一个参数,$2代表第二个参数,$0代表命令本身
参数详细说明
$i例子
shift语句
$i只能提供0到9这10个数据参数,那么超过10个怎么办呢?shift能使引用数移位,如此就可以将引用过的引数移掉,把位置留给下一个引数。
以“` `”符号包含的内容不是字符串,而是代表这是一个shell 命令。
echo “today is” `date` 前面是字符,后面`date`表示执行date这个命令。
PDATE=`date` 代表定义一个变量PDATE,将date执行完成输出的结果放入变量 PDATE中。
“expr”是用来取计算的结果。
输出结果是”9+10”
“expr”是用来取计算的结果。var1=`expr $a + $b注意:“+”前后都需要有空格
read命令用于从终端或文件读取输入。read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空字符。如果read命令后有变量名,输入内容赋给该变量,如果read命令后未跟变量名,读入的行将被赋值给内置变量REPLY。
下面是read的一个小例子:
第一种if条件语句。
if条件语句中test是一个固定关键字,用来判断condition的描述是否正确,正确继续执行下面语句,错误执行else后面语句。fi表示if语句结束。
第二种if条件语句。
不同的条件代表不同的判断方式。例如 if [ -r file ];,”[” ”]”里面都要加上空格,”]”后面要加”;”号。
-option说明
第二种if条件语句例子。
while循环语句。
expr为真的时候,while循环一直下去,直到expr为假。
while程序使用举例:
case分支条件语句:
当条件语句中的 string等于pattern字符串时执行pattern下面命令。当没有符合条件时,最后执行*)。
case语句举例:
for循环语句:
list可以是一个字符串或数字。for每执行一次循环就将varname指定为list中的一个值,直到list这个数组结束。
for语句举例:
exit语句:
exitcode exit可以让一个shell退出,与C语言的exit函数类似。
shell和C语言一样,可以提供自定义函数
使用函数前必须先定义函数。
函数使用举例:
带参数的函数举例
带参数和返回值的函数举例:
4000
干货送上,先来一段代码例程:(第一行前面的“#”号不是注释, “#!”而且出现在第一行代表通知系统用/bin/sh来执行下面的程序。)
#! /bin/sh a=5 b=3 echo a=$a echo b=$b if (test “$a” = “$b”) then echoa=b else echoa!=b fi
以“#”开头的行代表注释。字符串前面加”$”代表它是一个变量,如果”$”后面是数字,代表第几个参数。$1代表第一个参数,$2代表第二个参数,$0代表命令本身
参数详细说明
参数 | 说明 |
$i | 代表第i个参数 |
$# | 代表参数个数 |
$* | 代表所有参数 |
$? | 上一个命令的返回值 |
#! /bin/sh echo $# echo $1 echo $*
shift语句
$i只能提供0到9这10个数据参数,那么超过10个怎么办呢?shift能使引用数移位,如此就可以将引用过的引数移掉,把位置留给下一个引数。
echo $# $* shift echo $# $*
以“` `”符号包含的内容不是字符串,而是代表这是一个shell 命令。
echo “today is” `date` 前面是字符,后面`date`表示执行date这个命令。
PDATE=`date` 代表定义一个变量PDATE,将date执行完成输出的结果放入变量 PDATE中。
“expr”是用来取计算的结果。
a=9 b=10 var1=$a+$b echo $var1
输出结果是”9+10”
“expr”是用来取计算的结果。var1=`expr $a + $b注意:“+”前后都需要有空格
read命令用于从终端或文件读取输入。read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空字符。如果read命令后有变量名,输入内容赋给该变量,如果read命令后未跟变量名,读入的行将被赋值给内置变量REPLY。
下面是read的一个小例子:
#! /bin/sh read a read b var1=`expr $a + $b` echo $var1
第一种if条件语句。
if (test condition) then commands else commands fi
if条件语句中test是一个固定关键字,用来判断condition的描述是否正确,正确继续执行下面语句,错误执行else后面语句。fi表示if语句结束。
第二种if条件语句。
if [ -option expr ]; then commands else commands fi
不同的条件代表不同的判断方式。例如 if [ -r file ];,”[” ”]”里面都要加上空格,”]”后面要加”;”号。
-option说明
option | 说明 |
-d file | 文件存在并且是个目录 |
-e file | 文件存在 |
-r file | 文件存在并且可读 |
-w file | 文件存在并且可写 |
-x file | 文件存在并且可执行 |
#!/bin/sh if[ -f abc.c ]; then echo “have abc.c” else echo “have not abc.c” fi
while循环语句。
while[ expr ]; do commands done
expr为真的时候,while循环一直下去,直到expr为假。
while程序使用举例:
#!/bin/sh times=0 while[ "$times" != "5" ]; do echo $times times=$[$times + 1] done
case分支条件语句:
case“string” in pattern_1) commands ;; pattern_2) commands ;; *) commands ;; esac
当条件语句中的 string等于pattern字符串时执行pattern下面命令。当没有符合条件时,最后执行*)。
case语句举例:
#!/bin/sh case"$1" in start) echo "is start" ;; stop) echo "is stop" ;; *) echo "is nothing" esac
for循环语句:
forvarname in list ; do commands done
list可以是一个字符串或数字。for每执行一次循环就将varname指定为list中的一个值,直到list这个数组结束。
for语句举例:
#!/bin/sh sun=0 fori in 1 2 3 4 5; do sum=$[$sum + i] echo $sum done
exit语句:
exitcode exit可以让一个shell退出,与C语言的exit函数类似。
shell和C语言一样,可以提供自定义函数
functionfuncname { commands }
使用函数前必须先定义函数。
函数使用举例:
#!/bin/sh functionfunc { echo "function is begin" } func
带参数的函数举例
#!/bin/sh functionfunc { echo "function is begin" a=$1 b=$2 echo `expr $a + $b` } func3 5
带参数和返回值的函数举例:
#!/bin/sh functionfunc { echo "function is begin" a=$1 b=$2 return `expr $a + $b` } func3 9 var1=$? echo$var1
4000
相关文章推荐
- [Unix]shell编程珠玑(4)-- 读取属性文件和访问CVS
- 【原创】shell编程入门
- Shell编程基础
- Shell编程
- Shell编程中Shift的用法
- shell编程基础(2)
- shell编程连载【3】- 制作简单的菜单
- 学习shell编程两周小记
- SHELL编程一二三
- Linux的shell编程——数学运算
- shell编程——if语句
- shell编程学习之数组
- 我学shell编程2
- Shell编程基础
- Linux下的Shell编程基础知识
- shell编程基础
- linux shell编程五步拳(张迅雷闪击shell系列) 第二集 shell编程基本语法快速入门
- SHELL编程
- shell编程之给变量赋值的五种方法
- Shell编程之 函数