您现在的位置: 主页 > 装修 > 正文

Linux SHELL脚本编程.doc 8页

2020-04-17 01:36  来源:原创   字号:T | T

  Linux SHELL脚本

  bash(Bourne Again Shell):由GNU开辟的Shell,主要目标是与POSIX规范保持不合,同时兼顾对sh的兼容,bash从csh和ksh自创了很多功用,是各类Linux发行版规范设备的Shell,在Linux系统上/bin/sh常常是指向/bin/bash的符号链接。固然如此,bash和sh照样有很多分歧的,一方面,bash扩大了一些敕令和参数,另外一方面,bash其实不完整和sh兼容,有些行动其实不不合,所以bash需求模拟sh的行动:当我们经过sh这个依次名启动bash时,bash可以伪装自己是sh,不认扩大的敕令,而且行动与sh保持不合。

  用户的默许Shell设置在/etc/passwd文件中。

  如Ubuntu 7.10的/bin/sh是指向/bin/dash的符号链接,dash也是一种相似bash的Shell

  1、Shell脚本语法

  1. 条件测试:test [

  敕令test或[可以测试一个条件可否成立,假设测试结果为真,则该敕令的Exit Status为0,假设测试结果为假,则敕令的Exit Status为1(留心与C言语的逻辑表现正好相反)。例如测试两个数的大年夜小关系:

  $ VAR=2

  $ test $VAR -gt 1

  $ echo $?

  0

  $ test $VAR -gt 3

  $ echo $?

  1

  $ [ $VAR -gt 3 ]

  $ echo $?

  1

  Table 1 测试敕令:

  [ -d DIR ] 假设DIR存在而且是一个目次则为真 [ -f FILE ] 假设FILE存在且是一个通俗文件则为真 [ -z STRING ] 假设STRING的长度为零则为真 [ -n STRING ] 假设STRING的长度非零则为真 [ STRING1=STRING2

  ] 假设两个字符串相反则为真 [ STRING1

  !=STRING2 ] 假设字符串不相反则为真 [ ARG1 OP

  ARG2 ] ARG1和ARG2应当是整数或许取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大年夜于)-ge(大年夜于等于)当中的一个

  Table 2 带与、或、非的测试敕令

  [ ! EXPR ] EXPR可所以上表中的任意一种测试条件,!表现逻辑反 [ EXPR1 -a EXPR2 ] EXPR1和EXPR2可所以上表中的任意一种测试条件,-a表现逻 [ EXPR1 -o EXPR2 ] EXPR1和EXPR2可所以上表中的任意一种测试条件,-o表现逻辑或

  2. if/then/elif/else/fi

  和C言语相似,在Shell中用if、then、elif、else、fi这几条敕令完成分支控制。这类流程控制语句实质上也是由若干条Shell敕令构成的,例如先前讲过的

  if [ -f ~/.bashrc ]; then

  . ~/.bashrc

  fi 实际上是三条敕令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc是第二条,fi是第三条。假设两条敕令写在统一行则需求用;号隔开,一行只写一条敕令就不需求写;号了,其余,then前面有换行,但这条敕令没写完,Shell会主动续行,把下一行接在then前面算作一条敕令处理。和[敕令一样,要留心敕令和各参数之间必须用空格隔开。if敕令的参数构成一条子敕令,假设该子敕令的Exit Status为0(表现真),则履行then前面的子敕令,假设Exit Status非0(表现假),则履行elif、else或许fi前面的子敕令。if前面的子敕令平日是测试敕令,但也可所以其它敕令。Shell脚本没有{}括号,所以用fi表现if语句块的完毕。见下例:

本文相关新闻推荐: