Linux笔记之shell script

Sehll script是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法与命令写在里面,搭配正则表达式、管道命令与数据流重定向等功能,已达到我们所以想要的处理目的。

一、script的编写与执行

执行sh文件的方法:

  • 直接命令执行(文件必须具备rx权限)

使用绝对路径来执行

使用相对路径来执行

将sh文件放在PATH变量指定的目录下,例如:~/bin/

  • 以bash进程来执行:通过“bash shell.sh”或“sh shell.sh”来执行(文件只需具备r权限,且当前目录下存在该sh文件)
  • source或者小数点(.)来执行,例如:source shell.sh

二、script的执行方式区别

利用直接执行的方式来执行script:在子进程中执行(直接命令执行、bash进程执行都属于这种)

利用source来执行脚本:在父进程中执行(命令格式:source 文件名)

三、善用判断式(test或者中括号)

1、test命令

检测系统上面某些文件或者是相关的属性、字符串、多重条件判断

165518_xOZo_3644171.png

165536_qLn6_3644171.png

165548_QeIK_3644171.png

举例:

  • 用户首选输入一个文件名
  • 如果文件不存在,则输出文件不存在并中断程序;
  • 若文件存在,则判断是文件或目录,然后输出相应结果;
  • 判断用户对这个文件或者目录所拥有的权限,并输出权限数据;

165636_GPMe_3644171.png

2、【】判断符号

在方括号中的每个组件都需要用空格隔开,变量用双引号括起来,常量用单或者双引号括起来

例如:

165700_C2zr_3644171.png

箭头所对应的都是空格。

3、shell script默认变量$0,$1,。。。

执行脚本的后面可以带参数。

$0默认为文件名,其后的是参数。$#代表参数个数,$@代表"$1"," $2","$3"等$*代表“$1c$2c$3”,其中c是分隔符,默认是空格键

举例:

执行一个带参数的script,要求屏幕显示:

  • 文件名;
  • 共有几个参数;
  • 若参数小于2则告知参数太少;
  • 全部参数内容;
  • 第一个参数;
  • 第二个参数;

165727_f5Hj_3644171.png

四、条件判断式

1、If...then

if [ 条件判断式一 ]; then

    程序段

elif [  条件判断式二 ];  then

    程序段

else

    程序段

fi

(注意事项:if 和 [ 之间需要有空格,; 和 then之间也需要空格)

举例:

165808_qHUU_3644171.png

165820_kAjk_3644171.png

165834_NCDv_3644171.png

2、case...esac

case  $变量名称  in

    "第一个变量内容")

        程序段

        ;;

    "第二个变量内容")

        程序段

        ;;

    *)

        程序段

        exit 1

        ;;

    Esac

举例:

165945_gQK2_3644171.png

五、函数

function fname(){

程序段

}

其中function也是拥有内置变量的,它与shell script很类似,函数名称表示$0,后续变量是以$1,$2...替代的

六、循环

1、    while [ condition ]

    do

    程序段

    done

2、  until [ condition ]

    do

    程序段

    done

3、  for var in conl con2 con3

    do

    程序段

    done

4、  for ( ( 初始值; 限制值; 执行步长 ) )

    do

    程序段

    done

七、追踪与调试

sh [-nvx] 文件名

-n:不要执行脚本,仅查询语法的问题

-v:在执行脚本前,先将脚本的内容输出到屏幕上

-x:将使用到的脚本内容显示到屏幕上

转载于:https://my.oschina.net/u/3644171/blog/1541957

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值