`
cuiyaoonan2000
  • 浏览: 25817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell编程教程or学习笔记

阅读更多

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

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

 

 

 

 

1
1
分享到:
评论

相关推荐

    shell学习笔记.docx

    Shell编程是Linux操作系统中的一种命令解释器,它允许用户通过命令行与系统进行交互,执行各种操作。在《shell编程从入门到精通》一书中,作者张昊详细讲解了shell编程的基础知识。以下是对该书内容的部分总结: 1....

    shell脚本编程之case语句学习笔记

    shell编程中的case语句也是这个意思,case会对字符串进行匹配,是从第一个模式开始的,如果有一个模式已经匹配成功的话,其他的模式就不会再进行匹配了,下面看下代码中的用法吧。 #!/bin/sh echo please yes or no...

    shell中case的用法学习笔记

    在Shell编程中,`case`语句是一种条件控制结构,用于根据变量的值执行相应的代码块。它允许你将变量的内容与一系列模式进行匹配,从而实现灵活的条件判断。下面我们将详细探讨`case`语句的使用格式、特点以及几个...

    Vxworks学习笔记

    个人前几年学习Vxworks时,整理的笔记,总给大家了。 1 基于硬盘启动的Vxworks环境搭建 3 2 Vxworks引导盘制作 6 2.1 通过DOS加载VxWorks方法 6 2.2 Bootrom三种类型 7 2.3 VxWorks映象 7 2.4 Bootrom.sys最快制作...

    linux shell 中数组的定义和for循环遍历的方法

    linux shell中的语法和普通编程语言 c/c++ java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用。 今天突然被问到数组怎么去遍历。平时写shell脚本也经常遍历数组,但是一下没答上来,被鄙视了。 ...

    vbscript-follow笔记

    VBScript,全称Visual Basic Script,是一种轻量级的脚本语言,主要在Windows环境中使用,尤其在Internet Explorer浏览器和Microsoft Office套件中广泛...不过,理解这些基础概念将有助于理解和学习相关笔记中的内容。

    Python的第一天笔记

    Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名。它在多个领域有着广泛的应用,包括科学计算、数据分析、大数据开发、Web开发、网络爬虫,以及人工智能(AI)算法的实现。Python被称为...

    Python笔记(DOC).doc

    1. **Shell脚本替代**:虽然Python通常不是最佳选择,但在某些情况下可以用作shell脚本的替代品。 2. **胶水语言**:Python常被用作“胶水”语言,连接和调用其他语言编写的库或组件。 3. **框架开发**:许多流行的...

    delphi学习杂记

    ### Delphi 学习杂记知识点汇总 #### 一、为控件添加边框 ...以上就是本次 Delphi 学习笔记中涉及的一些关键知识点及其解析。通过这些代码示例的学习,可以更好地理解和掌握 Delphi 编程中的常用技巧和技术细节。

Global site tag (gtag.js) - Google Analytics