鸟哥Linux私房菜学习记录day6

发布时间 2023-08-01 17:13:14作者: Redamancy_03

第十二章 学习Shell Scripts

script的功能

script的版本信息

script的作者与联络方式

script的版权声明方式

script的History(历史记录)

script内较特殊的指令,使用绝对路径的方式来下达

预先声明与设置脚本运行时需要的环境变量

 

 

 

 

 

 test 判断

关于某个文件名的判断

test -[bcedfpSL] filename

关于档案的权限侦测

test -[rwxugks] filename

两个档案之间的比较 test file1 -nt file 2

-nt(newer than)

-ot   (older than)

-ef 判断file1与file2是否为同一档案,可用在判断hard link 的判定上,主要意义在判定,两个档案是否据指向同一个inode

-eq        equal

-ne        not equal

-gt         greater than

-lt          less than

-ge        greater than or equal

-le         less than or equal

判断字符串的数据

test -z string 判定字串是否为 0 ?若 string 为空字串,则为 true
test -n string 判定字串是否非为 0 ?若 string 为空字串,则为false。 -n 亦可省略
test str1 == str2 判定 str1 是否等于 str2 ,若相等,则回传 true
test str1 != str2 判定 str1 是否不等于 str2 ,若相等,则回传 f

6. 多重条件判定,例如: test -r
filename -a -x filename   (and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 r 与 x 权限时,才回传 true。
-o (or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 r 或 x 权限时,就可回传 true。
! 反相状态,如 test ! -x file ,当 file 不具有 x 时,回传 true

 

 判断符号 [  ]

[ -z "${HOME}" ] ; echo $?

 

 判断语句

if [ 条件判断式 ]; then

&& 代表 AND
|| 代表 or

 

# 一个条件判断,分成功进行与失败进行 (else)

if [ 条件判断式 ]; then
当条件判断式成立时,可以进行的指令工作内容;
else
当条件判断式不成立时,可以进行的指令工作内容;
fi

 

 

多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行
if [ 条件判断式一 ]; then
当条件判断式一成立时,可以进行的指令工作内容;
elif [ 条件判断式二 ]; then
当条件判断式二成立时,可以进行的指令工作内容;
else
当条件判断式一与二均不成立时,可以进行的指令工作内容;
fi

 

 

case  $变量名称  in         <==关键字为 case ,还有变量前有钱字号
    "第一个变量内容")      <==每个变量内容建议用双引号括起来,关键字则为小括号 )
      程序段
        ;;                                    <==每个类别结尾使用两个连续的分号来处理!
    "第二个变量内容")
      程序段
        ;;
     *)                                   <==最后一个变量内容都会用 * 来代表所有其他值
            不包含第一个变量内容与第二个变量内容的其他程序执行段
       exit 1
      ;;
  esac

 

利用function功能

函数可以在 shell script 当中做出一个类似自订执行指令的东西,最大的功能是, 可以简化我们很多的程序码~

function fname() {
程序段
}

 循环loop

while [ condition ] <==中括号内的状态就是判断式
do           <==do 是循环的开始!
       程序段落
done        <==done 是循环的结束

 

until [ condition ]
do
      程序段落
done

 

for var in con1 con2 con3 ...
do
      程序段
done

1. 第一次循环时, $var 的内容为 con1 ;
2. 第二次循环时, $var 的内容为 con2 ;
3. 第三次循环时, $var 的内容为 con3 ;

 

for (( 初始值; 限制值; 执行步阶 ))
do
     程序段
done

初始值:某个变量在循环当中的起始值,直接以类似 i=1 设置好;
限制值:当变量的值在这个限制值的范围内,就继续进行循环。例如 i<=100;
执行步阶:每作一次循环时,变量的变化量。例如 i=i+1

 

搭配乱数与阵列的实验

  shell script的追踪与debug

$ sh [-nvx] scripts.sh
选项与参数:
-n :不要执行 script,仅查询语法的问题
-v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上
-x :将使用到的 script 内容显示到屏幕上