您的位置:首页 > 运维架构 > Shell

shell编程教程or学习笔记

2014-05-27 16:40 316 查看
----------------------------------------------------hello world-------------------------------------------

linux 创建如下文件 vim hello

#! /bin/bash //告诉Shell 使用哪个Shell 程序

#Display a line //#表示注释

//空白行用来区分不同更功能 没有实际意义

name="cuiyaonan2000@163.com"

echo "Hello World" //echo 将后面的参数传递给标准输出

输出: Hello World

----------------------------------------------------hello world-------------------------------------------

-----------------------------------------------------------关于变量-------------------------------------------------

在脚本中直接使用如下的方式创建变量,以及使用变量

log ="cuiyaonan2000@163.com" //注意等号两边不能有空格

echo $name //使用$来获取变量中的值 结果输出 cuiyaonan2000@163.com

echo " this is the \&name" //结果输出 this is the $name

echo "this is the $name" //结果输出 this is the cuiyaonan2000@163.com

echo "this is the ${name}email" //输出结果 this is the cuiyoanan2000@163.comemail 这里{}用户限定一个变量的开始和结束

source hello //这里的hello是上面的文件,执行后 就能在父Shell环境下 调用name变量的值

echo $name

export count=5 //表示让脚本影响子Sheel环境(就是当前用户的Shell) ,输出变量count

bash // 启动子Shell

echo $count //在子Shell中显示变量的值

exit //退出子Shell

unset count //表示删除一个变量

num1=1+2

num2=$[1+2] //同理 1可以替换成变量 $num 如果不加$[] 则会输出 1(这里的1是$num的值) + 2,而非3

echo $num1 $num2 //输出 1+2 3 ,所以使用变量进行运算需要使用 $[]

也可以使用 let num2 = $num2 +1

2#10:表示2进制10, 16#10:表示16进制10

expr 1 + 2 //输出结果为3 ,替代$[],注意 1 + 2 中间必须要有空格否则当做字符串输出

//也可以参考let

-----------------------------------------------------------关于变量-------------------------------------------------

-----------------------------------------------------------关于传入数组参数变量-------------------------------------------------

$1 表示第一个参数 $2表示第二个参数 $3表示第三个参数

$0 表示脚本的名字

$* 表示参数列表

$@同上

$# 参数个数

举例for循环与数组参数

for file in #@ //file是变量, 循环传递来的数组参数

do

ls -l $file

done

-----------------------------------------------------------关于传入数组参数变量-------------------------------------------------

-----------------------------------------------------------关于引号规则-------------------------------------------------

echo " this is the $name" // 双引号对$ 进行解释

echo 'this is the $name' //单引号对$不进行解释,输出为 this is the $name

echo "today is `date " //到引号 会运行其中的命令 将date当做命令来执行

-----------------------------------------------------------关于引号规则-----------------------------------------------

-----------------------------------------------------------判断语句--------------------------------------------------------

#! /bin/bash

read password //read 命令用于 请求一个 用户输入,并将值赋给 password

if [ "$password" = "12333"] // 判断 用户输入的值是否等于 12333 . 这里的[ 是个命令,所以 等号,参数,前后都需要有空格

//对于 if的判断参数的解释: if的判断语句只接受程序作为参数. 这也是为什么使用 [ 来包含 "$password" = "123333"

//因为[其实是个命令,可以用test进行替换为: if test $password = "12333"

//这里有个问题,因为 test和[是命令 所以个个参数和运算符=之间都需要有空格隔开.这也是变量赋值的时候不能有空格的原因

//这里的 判断参数可以是脚本 因为脚本也是程序. 返回0表示真 ,非0表示假

then

echo " you are in"

fi // 表示语句块结束

if语句的其它格式

if 判断

then

命令

elif 判断

then

命令

else

命令

fi

case多选结构

case $1 in

start) //判断 $1 是否等于 start

命令

;; //这里表示结束退出.而且该命令是一个case必须额的

stop)

命令

;;

*) //使用了通配符,相当于如上都没有匹配则执行

命令

;;

esac //表示case结束

现在有3种类型的判断: A:字符串判断 B:文件测试 C:数字比较 每种判断提供了多种属性 参考p344

exit $@ //exit 表示退出成 并返回一个值 可以是 exit 0 或者 exit $@

-----------------------------------------------------------判断语句--------------------------------------------------------

-----------------------------------------------------------循环语句---------------------------------------------------------

while 虚幻语句

while test $number -le 100 // numbe的值小于或等于 100 为真继续运行

do

命令

done

until 判断语句 //这的判断语句 是 当为真的时候就退出

do

命令

done

for i in 1 2 3 // in 后面的 是参数数组以空格隔开 ,

do

echo $i

done

seq命令详解

seq 9 : 会生成 从1-9的参数数组

for i `seq 9` //注意此处 到引号的作用

do

echo $i

done

-----------------------------------------------------------循环语句---------------------------------------------------------

-----------------------------------------------------------一些常用的命令----------------------------------------------

read: 从标准输入接收一行信息, 如果没有提供变量名,则会将信息放在变量REPLY. 当使用Ctrl+D\

read可以将输入的多个数据存到多个变量中,其中 输入的以空格隔开. 如:read first second

当一个进程运行成功后总会想父进程返回数值0(表示正常),其他值表示了异常

exit: 强行退出一个脚本,并想调用脚本的进程返回一个整数值

trap:用来捕获信号,例子如下

#! /bin/bash

trap `echo "type quite to exit"` INT //这句话的意思是捕获INT信号(就是Ctrl+Z)后 就打印 "type quite to exit".

-----------------------------------------------------------一些常用的命令----------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: