Linux系统中的shell编程操作

本文概述了shell编程的基础,包括环境变量如HOME、LOGBANE等的使用,用户自定义变量的定义与操作,全局与局部变量的区别,以及流程控制如if-else、for循环和函数调用。深入解析了条件测试、输入输出和调试技巧。
摘要由CSDN通过智能技术生成

 

shell编程总结

程序结构:

#!/bin/bash

#程序功能及作者等

脚本序列

shell变量的定义/输出/输入方式

1.环境变量

HOME

登录用户工作目录的完全路径名

LOGBANE

当前用户名

PAIH

用冒号分隔的目录搜索路径决定shell将在哪些目录中寻找命令或程序

PSI

系统提示符#为管理员,$为普通用户

PWD

当前工作目录的绝对路径名

UID

当前用户的标识符,取值是用数字构成的字符串

2.用户自定义变量

简单变量

变量名(大写)=变量值

变量置换

变量名=${参数:=|-|+|? word}

3.全局变量与局部变量

Shell 函数中定义的变量默认也是全局变量,要想变量的作用域仅限于函数内部,可以在定义时加上local命令,此时该变量就成了局部变量

l全局变量:在脚本中定义的变量都是全局变量,包括脚本中的函数,函数中使用的变量依然在全局生效。

声明变量时,使用“declare”,可以通过选项在声明的时候给予某些属性。

declare 选项:

1

2

3

4

5

6

7

8

9

10

-p:

-a:数组索引

-A:数组变量

-f:仅仅代表函数名

-i:整型数

-l:小写字母(自动转)

-r:只读变量声明

-t:跟踪属性,调试用

-u:大些字母

-x:通过环境变量导出的变量声明

 l局部变量:通过“local”关键字在函数内部定义局部变量,可以接受“declare”的一切选项,最好在函数中定义局部变量时使用。当在函数中使用local时,它会导致变量名使可见范围仅限于该函数及其子函数。

4.变量重置 unset 变量名

  临时取消环境变量用 unset

例如:unset USER,要永久生效须写到配置文件中

5.引用变量

  先定义后引用

  $变量名

6.预定义变量

$#

位置参数的数量

$*   

所有位置参数的内容

$?  

命令执行后返回的状态

$$  

当前进程的进程号

$!   

后台运行的最后一个进程的进程号

$0  

程序名

7.位置变量

  $1,$2...$n

8.输入输出命令

   lecho

              #echo  参数(参数中含有变量)   //将显示变量的内容

              #echo  字符串                   //直接显示这些字符串

   lread  变量名列表  //可接受用户输入的字符串

9.shell条件测试

  l命令测试:  $?

            0则正确,非0则错误

  l文件测试: 

-e文件名

若文件存在且,返回真

-r文件名

若文件存在且可读,返回真

-w文件名

若文件存在且可写,返回真

-x文件名

若文件存在且可执行,返回真

-s文件名

若文件存在且至少有一个字符,返回真

-b文件名

若文件存在且为特殊字符,返回真

-c文件名

若文件存在且为字符型特殊文件,返回真

-f文件名

若文件存在且为普通文件,返回真

-d文件名

若文件存在且是目录,返回真

  l数值比较: 

-gt

>

-lt

<

-ge

>=

-eq

==

-le

<=

-ne

!=

  l字符串比较: 

=

判断两个字符串是否相等

= !

判断两个字符串是否不等

-z

若字符串长度为0,返回真

-n

若字符串长度不为0,返回真

  l逻辑运算:

对已有逻辑取反值

-a

and

当两个测试条件都成立时返回真

-o

or

两个中一个测试条件成立返回真

优先等级!>-a>-o

10.流程控制

 

if-else  //分支流程控制

  if     条件测试命令串

       then

              条件为真时执行的命令

       else

              条件为假时执行的命令

fi

if-elif-else     //对于多分支的情况可以用if嵌套完成

       if     条件测试命令串

       then

              条件1为真时执行

       elif   条件测试命令串2

       then

              条件2为真时执行

       …

then

       条件n为真时执行

else

       条件n为假时执行

case       //多个分支中选择一个来执行

       case  条件测试命令串 in

       表达式1)

            分支1执行的命令

          ..

          ,,

       表达式2)

              分支2执行的命令

          ….

       表达式n)

              分支n执行的命令

          ..

          ,,

       *)

              其他命令

       esac

for 循环  //用于需要反复执行的命令

   for变量名

          [  In 数值列表  ]

   do

          循环执行的命令串

   done

11.函数使用

  l函数定义:在shell中,允许将一组命令集或者语句组成一个可重复使用的块,这些块称作shell函数

函数定义的基本格式为

       函数名()

              {

                     命令串

}

  l函数调用

       直接引用函数名即可

12.程序调试

#sh [选项]  [文件]  

(选项 -v  可以看详情 

 -x  按步骤来看详情)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值