Linux(Ubuntu)操作系统,了解Shell及其编程

目录

一、Shell的变量

1.1、系统变量

1.2、环境变量

1.3、自定义变量

1.3.1、命名规则

1.3.2、自定义变量使用

1.3.3、变量的赋值和替换

二、Shell的数组

2.1、数组声明与赋值

2.1.1、数组声明

2.1.2、数组赋值

2.2、数组的读取与长度

2.2.1、数组读取

2.2.2、数组长度

三、Shell的输入/输出

3.1、输入命令read

3.2、输出命令echo

四、Shell的运算符与特殊字符

4.1、运算符

4.2、特殊字符

4.2.1、反斜杠

4.2.2、双引号

4.2.3、单引号

4.2.4、反引号

4.2.5、注释符

五、Shell语句

5.1、test命令

5.1.1、整数运算符

5.1.2、字符串运算符

5.1.3、文件运算符

5.1.4、逻辑运算符

5.2、if语句

5.2.1、单分支if

5.2.2、双分支if

5.2.3、多分支if

5.3、case语句

5.4、while语句

5.5、until语句

5.6、for语句

5.7、循环控制语句

5.7.1、break

5.7.2、continue

六、综合应用实例

6.1、应用一


一、Shell的变量

1.1、系统变量

常用的系统变量如下:

按键:$?,作用:执行上一个指令或函数的返回值

按键:$#,作用:命令行参数的格式

按键:$n,作用:当前程序的第n个参数,n=1,2,3,4,...,9

按键:$0,作用:当前程序的名称

按键:$*,作用:以“参数1参数2...”形式保存所有参数

按键:$@,作用:以“参数1“”参数2...”形式保存所有参数

按键:$$,作用:本程序的(进程ID号)PID

按键:$!,作用:上一个命令的PID

按键:$-,作用:显示Shell使用的当前选项,与set命令功能相同

示例:

vim编辑t1.sh文件并查看

运行shell脚本并赋值变量

1.2、环境变量

按键PATH,作用:命令搜索路径,以冒号为分隔符。但当前目录不在系统路径里

按键HOME,作用:用户root目录的路径名,是cd命令的默认参数

按键COLUMNS,作用:定义了命令编辑模式下可以使用命令行的长度

按键EDITOR,作用:默认的行编辑器

按键VISUAL,作用:默认的可视编辑器

按键FCEDIT,作用:命令fc使用的编辑器

按键HISTFILE,作用:命令历史文件

按键HISTSIZE,作用:命令历史文件中最大可包含的命令条数

按键HISTFILESI,作用:命令历史文件中包含的最大行数

按键HISTORY,作用:显示历史命令

按键IFS,作用:定义Shell使用的分隔符

按键LONGAME,作用:用户登录名

按键MAIL,作用:执行一个需要Shell监视修改时间的文件。当该文件修改后,Shell发送消息You have mail给用户

按键MAILCHECK,作用:Shell检查MAIL文件的周期,单位是s

按键MAILPATH,作用:功能与MAIL类似,但可以用一组文件,以冒号分隔,每个文件后可跟一个问号和一条发向用户的信息

按键SHELL,作用:Shell的路径名       

按键TERM,作用:终端类型

按键TMOUT,作用:Shell自动退出的时间,单位为s,0为禁止Shell自动退出

按键PROMPT_COMMAND,作用:指定在主命令提示符前应执行的命令

按键PS1,作用:主命令提示符

按键PS2,作用:二级命令提示符,命令执行过程中要求输入数据时使用

按键PS3,作用:select的命令提示符

按键PS4,作用:调试命令提示符

按键MANPATH,作用:寻找手册页的路径,以冒号分隔

按键LD_LIBRARY_PATH,作用:寻找库的路径,以冒号分隔

示例:使用env命令查看环境变量

 

1.3、自定义变量

1.3.1、命名规则

1)首个字符必须为字符(a-z,A-z)

2)中间不能有空格,可以使用下划线(_)

3)不能使用标点符号

4)不能使用BASH中的关键字(可用help命令查看保留关键字)

自定义变量合法命名示例:

book123  MY_name_is_dashuaibi

自定义变量不合法命名示例:

123xxx x#@ math

错误点:数字开头,名称包含特色字符

1.3.2、自定义变量使用

注意点:

1)变量赋值,直接用=即可

2)使用变量需要加上$符合

3)输出变量需要使用echo命令

4)变量包含在字符串中,要使用需要加上{}符合括起来

1.3.3、变量的赋值和替换

1)赋值方式:变量名=值

注意点:

1)给变量赋值,不能在=两边留空格

错误的使用:(=号两边不能留空格)

2)多次给变量赋值-->变量的值为:最后一次赋值的值

3)清空变量的值-->使用unset命令

4)变量的替换,替换条件放在{}中

情况一:变量未定义或者值为空时,返回值为value的内容。否则返回变量的值,格式为${变量:-值}

情况二:变量未定义或者值为空,在返回时value的值的同时value赋值给变量。格式为${变量:=值}

情况三:变量已赋值,值才用value替换,否则不进行任何替换。格式为${变量:+值},值替代变量。

二、Shell的数组

2.1、数组声明与赋值

2.1.1、数组声明

命令:declare,作用,对数组进行声明

格式:

declare [+/-] [选项] 变量

[+/-]含义:

+/-:指定或关闭变量的属性

选项含义:

a:定义后面名为变量的类型为数组(array)类型

i:定义后面为变量的类型为整型数字(integer)类型

x:将后面的变量变成环境变量

r:将变量设置成readonly类型

f:将后面的变量定义为函数

数组声明示例:

2.1.2、数组赋值

在Shell中,用括号来表示数组,数组元素用空格符号分隔开

1)定义数组的形式一:连续赋值

数组名={值1 值2 值3 ... 值n},数组连续赋值,每个值以空格符号分隔开

2)形式二:单独赋值数组各个分量,可以使用不连续的下标,而且下标范围没有限制

如:数组名[序号]=值

示例:

x[0]=值1

x[2]=值2

x[5]=值3

3)形式三:对数组声明并赋值

declare -a 数组名={值1 值2 值3 值n}

2.2、数组的读取与长度

2.2.1、数组读取

格式:${数组名[下标]}

1)取数组的单个元素的时候,语法形式为:echo ${数组名[下标]}

2)取数组全部元素,使用:echo ${数组名[@]}或echo ${数组名[*]}

2.2.2、数组长度

1)使用echo ${#数组名[@]}或echo ${#数组名[*]}可以获取数组长度

2)用#{#数组名[n]}取得单个元素的长度

三、Shell的输入/输出

3.1、输入命令read

使用read语句从键盘或文件的某一行文本读入信息,并将其赋给一个变量。

格式:

read 变量名称 变量名称

注意点:

1)Shell用空格作为多个变量之间的分隔符

2)Shell将输入文本域超长部分赋值给最后一个变量

3.2、输出命令echo

用法:echo [选项] 字符串

选项可选参数:

-n,作用:输出后不自动换行

-e,作用:启用“\”字符的转化

-\,作用:字符的转化

-\a,作用:发出警告声

-\b,作用:删除前一个字符

-\c,作用:最后不加上换行符号

-\f,作用:换行但光标仍然停留在原来的位置

-\n,作用:换行且光标移至行首

-\r,作用:光标移至行首,但不换行

-\t,作用:插入Tab

-\v,作用:与\f相同

-\\,作用:插入\字符

-\x,作用:插入示例十六进制数所代表的ASCII字符

四、Shell的运算符与特殊字符

4.1、运算符

4.2、特殊字符

4.2.1、反斜杠

反斜杠是转义字符,它告诉我们Shell不要对其后面的那个字符进行特殊处理,只当做普通字符即可

4.2.2、双引号

由双引号括起来的字符,除了$、反斜杠和反引号几个字符任是特殊字符并保留其功能外,其余字符视为普通字符

4.2.3、单引号

由单引号括起来的字符都作为普通字符出现

4.2.4、反引号

Shell把反引号括起来的字符串解释为命令行后首先执行,并以它的标准输出结果取整取代整个反引号部分

4.2.5、注释符

以#开头的正文行表示注释行

五、Shell语句

5.1、test命令

作用:检查某个条件是否成立,如果条件为真,返回一个0值,如果条件不为真,则返回一个大于0的值。

格式:test expression 或者 [expression]

5.1.1、整数运算符

5.1.2、字符串运算符

5.1.3、文件运算符

5.1.4、逻辑运算符

5.2、if语句

5.2.1、单分支if

5.2.2、双分支if

5.2.3、多分支if

5.3、case语句

5.4、while语句

5.5、until语句

5.6、for语句

5.7、循环控制语句

5.7.1、break

使用:for、while、until中,作用:让脚本忽略循环体其它语句,强制退出循环

5.7.2、continue

使用:for、while、until中,作用:让脚本跳过其后面的语句,执行下一次循环

六、综合应用实例

6.1、应用一

        编写Shell脚本,执行后,打印一行提示“Please input a number:”,依次打印用户输入的值,直到用户输入end为止。

 

猜你喜欢

转载自blog.csdn.net/qq_57663276/article/details/127806067
今日推荐