关闭

shell的一些基础东西(流程控制等。。。)

448人阅读 评论(0) 收藏 举报

为什么学习脚本

4.4.2 脚本的执行

   1.将文件改为可以执行的属性即x属性,然后执行改文件
   2.文件后缀名为.sh,用sh来执行

   "和'最大的不同在于能不能保存变量内容,单引号里的内容都将变成单纯的字体,而不是特殊的字体.

4.4.3 卷标与运算符declare

   不定义变量,那么该变量是呈现字符串的形式,所以任何变量都是字符串

  number1=2*3+5*13-32+25
 declare number2=2*3+5*13-32+25

在最后输出结果时,$number1为2*3+5*13-32+25,而number2为64

4.4.4 交互式脚本

  最简单的交互式指令是read指令,read功能就是将键盘上输入的内容放到变量中.

  eg:[root@test test]# read name
     VBird
     [root@test test]# echo $name
     VBird

 怎么样定义脚本的参数代号
     [root@test test]myscript. opt1 opt2 opt3 opt4
                       $0      $1   $2   $3   $4
  从上面的例子可以看出,只要变量名称为$0,就表示为myscript也就是说 :

  $0:myscript. 亦即脚本的文件名
  $1:opt1,亦即第一个附加参数
  $2:opt2,
  $3:opt3

  eg:
 root@wwwvbird_shells]# cat parm.sh
#!/bin/bash
echo "This script's nmae => $0"
echo "parameters $1 $2 $3"

[root@www vbird_shells]# sh parm.sh hello1 hello2 hello3
This script's nmae => parm.sh
parameters hello1 hello2 hello3

4.4.5 脚本逻辑判断式与表达式

  逻辑判断式:
关于文件目录:
-f      常用!检测文件是否存在
-d      常用!检测目录是否存在
-b      检测是否为一个block文件
-c      检测是否为一个character文件
-S      检测是否为一个socket标签文件
-L      检测是否为一个符号链接文件
-e      检测某个东西是否存在!可以是任何东西.

关于程序
-G      检测是否由GID所执行的程序拥有
-O      检测是否由UID所执行的程序拥有
-p      检测是否为程序间传送信息的name pipe 或FIFO

关于文件的属性的检测
-r      是否为可读
-w      是否为可写
-x      是否为可执行
-s      是否为非空白文件
-u      是否具有SUID属性
-g      是否具有SGID属性
-k      是否具有sticky bit 属性

两个文件之间的判断比较
-nt    第一个文件比第二个文件新
-ot    第一个文件比第二个文件旧
-ef    第一个文件与第二个文件为同一个文件(如链接文件)

与或非
&&     逻辑与
||     逻辑或

运算符:
=      等于
!=     不等于
<      小于
>      大于
-eq    等于
-ne    不等于
-lt    小于
-gt    大于
-le    小于或等于
-ge    大于或等于
-a     双方都成立(and)
-o     单方成立(or)
-z     空字符串
-n     非空字符串

4.4.6 条件判断

4.4.6.1 if then fi

if [ 条件一 ] &&(||) [ 条件二 ]; then
elif [ 条件三 ] &&(||) [ 条件四 ]; then

else
fi

这里有强调的是
1.在[]中。只能有一个判断式
2.在[]和[]中,可以使用&&或||结合判断式
3.每一个独立的组件之间需要用空格键隔开


4.4.6.2 case .. esac

语法:
case 种类方式(string) in
      种类式一)
            程序执行段
            ;;
      种类式二)
            程序执行段
            ;;
        *)
          echo "Usage: {种类方式一|种类方式二}"
          exit 1
esac

种类方式(string)的格式有两种:

     直接输入与交互式(先read 变量名,在用$变量名)

4.4.6.3 循环

for:
for((条件1;条件2;条件3))

eg:
[root@www vbird_shells]# cat for.sh
#!/bin/bash

declare -i s
for ((i=1; i<=100;i=i+1))
do
        s=s+i
done
echo "The count is ====> $s"


for variable in variable1 variable2 ...

root@wwwvbird_shells]# cat foruser.sh
#!/bin/bash

account=`cut -d ":" -f1 /etc/passwd |sort`
echo "The following is your linux server's account "
for i in $account
do
        echo $i
done


while:
[root@www vbird_shells]# cat while.sh
#!/bin/bash

declare -i i
declare -i s
while [ "$i" != "101" ]
do
        s=s+i
        i=i+1
done
echo "The count is ====> $s"

until:
[root@www vbird_shells]# cat unitl.sh
#!/bin/bash

echo "Press Y/y to stop"
until [ "$yn" = "Y" ] || [ "$yn" = "y" ]
do
        read yn
done

4.4.6.3  调试脚本

#sh [-nvx] scripts
-n :不执行脚本,查询脚本内的语法,若有错则列出
-v :在执行脚本之前,先将脚本的内容输出在屏幕上
-x :将用到的脚本内容显示在屏幕上,与-v稍有不同.

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:199978次
    • 积分:1541
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:19篇
    • 译文:0篇
    • 评论:2条
    最新评论