shell编程教程or学习笔记

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

linux 创建如下文件 vim hello

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

#Display  a line    //#表示注释

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

name="[email protected]"

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

输出: Hello World

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

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

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

log ="[email protected]"                 //注意等号两边不能有空格

echo $name      //使用$来获取变量中的值 结果输出  [email protected]

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

echo "this is the $name"   //结果输出  this is the [email protected]

echo "this is the ${name}email" //输出结果 this is the [email protected]  这里{}用户限定一个变量的开始和结束

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 表示脚本的名字

$* 表示参数列表

[email protected]同上

$# 参数个数

举例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 [email protected]  //exit 表示退出成 并返回一个值  可以是 exit 0  或者 exit  [email protected]

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

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

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".

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

shell编程教程or学习笔记

时间: 2024-12-10 22:21:46

shell编程教程or学习笔记的相关文章

python基础教程_学习笔记26:好玩的编程

好玩的编程 程序设计的柔术 当大家坐下来并计划应该如何组织程序的时候,对于这个具体的程序,还没有任何的经验.在实现功能的时候,会逐渐地学到对原始设计有用的新知识.不应该无视一路走来所吸取的教训,而应该将它们用于软件的重新设计(或重构)中. 灵活性的实现包括许多方面,下面是其中两个: 原型设计:python最棒的功能之一就是可以快速地编写程序.编写原型程序是更充分地了解问题的一种很好的方法. 配置:灵活性有很多种存在形式.配置的目的就是让程序某部分的改变更简单,对于你和用户来说都是这样. 第三点是

Java快速教程--vamei 学习笔记(进阶篇)

感谢vamei,学习链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html Java进阶01 String类 学习链接:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 字符串操作 ---------------------------------------------------------------------------------------

python基础教程_学习笔记21:文件和素材

文件和素材 打开文件 open函数用来打开文件,语法如下: open([name[,mode[,buffering]]) open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象.模式(mode)和缓冲(buffering)参数都是可选的. >>> f=open(r'D:\software(x86)\Python27\README.txt') 如果文件不存在,则出现错误: >>> f=open(r'D:\software(x86)\Python27\READM

python基础教程_学习笔记12:充电时刻——模块

充电时刻--模块 python的标准安装包括一组模块,称为标准库. 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 任何python程序都可以作为模块导入. $ cat hello.py #!/usr/bin/python print "Hello,signjing!" $ ./hello.py Hello,signjing! 假设将python程序保存在/home/ggz2/magiccube/mysh/p

python基础教程_学习笔记20:标准库:一些最爱——os

标准库:一些最爱 os os模块为你提供了访问多个操作系统服务的功能. os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和变量 函数/变量 描述 environ 对环境变量进行映射 system(command) 在子shell中执行操作系统命令 sep 路径中的分隔符 pathsep 分隔路径的分隔符 linesep 行分隔符('\n','\r','\r\n') urandom(n) 返回n字节的加密强随机数据 os

python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

标准库:一些最爱 集合.堆和双端队列 集合 集合Set类位于sets模块中. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> set(range(10)) set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 集合是由序列(或其他可迭代的对象)构建的.主要用于检查成员资格,因此,副本是被忽略的: >>> range(10)*2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9

《语义网基础教程》学习笔记(二)

二.RDF概述(参考http://zh.transwiki.org/cn/rdfprimer.htm) 1.本体: 一个本体是一个概念体系(conceptualization)的显式的形式化规范. 一般来说,一个本体形式地刻画一个论域.一个典型的本体由有限个术语及它们之间的关系组成. ★在万维网这个环境中,本体提供了对给定领域的一种共识.这种共识对于消除术语差别是必要的. 通过把各自的术语差异映射到一个公共的本体之间的直接映射,可以消除这些术语差异. 不管采用哪种方案,本体都支持语义可共用性(s

python基础教程_学习笔记23:图形用户界面

图形用户界面 丰富的平台 在编写Python GUI程序前,需要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合,可以通过叫做GUI工具包的给定Python模块进行访问. 工具包 描述 Tkinter 使用Tk平台.很容易得到.半标准. wxpython 基于wxWindows.跨平台越来越流行. PythonWin 只能在Windows上使用.使用了本机的Windows GUI功能. JavaSwing 只能用于Jython.使用本机的Java GUI. PyGTK 使用GTK

python基础教程_学习笔记3:元组

元组 元组不能修改:(可能你已经注意到了:字符串也不能修改.) 创建元组的语法很简单:如果用逗号分隔了一些值,那么你就自动创建了元组. >>> 1,3,'ab' (1, 3, 'ab') 元组也是(大部分时候是)通过圆括号括起来的. >>> (1,3,'13') (1, 3, '13') 空元组可以用没有内容的两个圆括号来表示. 如何实现包括一个值的元组呢? >>> (5) 5 >>> ('ab') 'ab' >>>