1.一入Shell深似海,酷炫外壳惹人爱

可以用Shell来自动化一系列命令,也称之为Shell编程。

一般以rc结尾的多为配置文件,里面包含了软件运行前会去读取并运行的那些初始化命令,例如.bashrc,.vimrc。

切换Shell:chsh命令

centos 后台执行mv命令 centos怎么执行sh文件_linux

2.创建脚本文件:vim test.sh,shell脚本和普通的文本文件并没有什么区别,加上.sh以强调这是一个脚本文件。

在写一个Shell脚本时,第一要做的事就是指定要使用哪种Shell来解析/运行它,因为Sh,Ksh,Bash等等Shell的语法不尽相同。在第一行写上#!/bin/bash(我们选择学习Bash,因为它比较常用)。

运行命令:原则很简单,只需要写入你想要执行的命令。

注释:Shell脚本的注释是以#开头。

给脚本文件添加可执行的权限:chmod +x test.sh

运行脚本文件:./test.sh

以调试模式运行:bash -x test.sh 这样Shell就会把我们的脚本文件运行时的细节打印出来了。

centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_02


3.Shell的变量(上)

定义变量:message=‘Hello World’ 注意等号两边不要加空格

echo命令:它的作用是在终端上显示传入的信息,如果要插入换行符,那么需要用到-e参数,为了使转义字符发生作用,在句子中也要加入\n,以表示换行。

centos 后台执行mv命令 centos怎么执行sh文件_Shell_03


Bash脚本中,如果要显示一个变量,用echo后接变量名还不够,须在变量名前加上$

单引号:如果变量被包含在单引号里面,那么变量不会被解析,美元符号保持原样输出,因为单引号会忽略被它括起来的所有特殊字符。

双引号:忽略大多数特殊字符,但是不包括:美元符号($),反引号(`),反斜杠(\)。不忽略美元符号意味着Shell在双引号内部可以进行变量名替换。

centos 后台执行mv命令 centos怎么执行sh文件_Shell_04


centos 后台执行mv命令 centos怎么执行sh文件_linux_05


反引号:要求Shell执行被它括起来的内容

read命令:读取到的文本会立即被储存在一个变量里。

例如:

centos 后台执行mv命令 centos怎么执行sh文件_shell_06


centos 后台执行mv命令 centos怎么执行sh文件_Shell_07


也可以用read命令一次性给多个变量赋值,read命令一个单词一个单词(单词是用空格分开的)得读取你输入的参数,并且把每个参数赋值给对应变量

例如:

centos 后台执行mv命令 centos怎么执行sh文件_shell_08


centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_09


-p参数:显示提示信息

centos 后台执行mv命令 centos怎么执行sh文件_Shell_10


-n参数:可以限制用户输入的字符串的最大长度

centos 后台执行mv命令 centos怎么执行sh文件_centos_11


-t参数:限制输入时间,超过这个时间,就不读取输入了。

-s参数:隐藏输入内容4.Shell的变量(下)

请牢记:在Bash中,所有的变量都是字符串!

Bash本身不会操纵数字,因此它也不会做运算,这是与其他编程语言不一样的地方。如果要做数学运算,需要用到let命令,let命令可以用于赋值。

centos 后台执行mv命令 centos怎么执行sh文件_shell_12


centos 后台执行mv命令 centos怎么执行sh文件_linux_13


环境变量:Shell的环境变量可以被此种Shell的任意脚本程序使用,我们有时候也把环境变量成为全局变量。可以用env命令来显示目前所有的环境变量。

有时候,我们需要自己定义环境变量,可以用export命令来完成。参数变量:可以这样调用我们的脚本文件:./variable.sh 参数1 参数2…

这些个参数1,参数2…被称为参数变量。

centos 后台执行mv命令 centos怎么执行sh文件_linux_14


centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_15


centos 后台执行mv命令 centos怎么执行sh文件_Shell_16


可以用shift命令来挪移参数,以便依次处理,因此shift命令常被用在循环中,使得参数一个接一个地被处理。

centos 后台执行mv命令 centos怎么执行sh文件_centos_17


centos 后台执行mv命令 centos怎么执行sh文件_Shell_18

数组:

centos 后台执行mv命令 centos怎么执行sh文件_centos_19


会打印出value1。

数组可以包含任意大小的元素数目,数组的元素编号不需要是连续的。

用通配符星号可以输出数组中所有元素的值:echo ${array[*]}

就会输出value0 value1 value2 value55.条件语句

centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_20


fi表示if语句结束,做这个只有在条件测试为真时才会被执行

方括号[]中的条件测试两边必须要空一格,不能写成[test],而要写成[ test ]

在Shell语言中,等于是用一个等号来表示的。

使用一个定义过的变量,只要在变量名前面加美元符号即可。

centos 后台执行mv命令 centos怎么执行sh文件_centos_21


centos 后台执行mv命令 centos怎么执行sh文件_shell_22


centos 后台执行mv命令 centos怎么执行sh文件_linux_23


centos 后台执行mv命令 centos怎么执行sh文件_shell_24


centos 后台执行mv命令 centos怎么执行sh文件_Shell_25


centos 后台执行mv命令 centos怎么执行sh文件_shell_26


测试字符串:

centos 后台执行mv命令 centos怎么执行sh文件_shell_27


centos 后台执行mv命令 centos怎么执行sh文件_linux_28


centos 后台执行mv命令 centos怎么执行sh文件_Shell_29


测试数字:

centos 后台执行mv命令 centos怎么执行sh文件_Shell_30


centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_31


测试文件:

centos 后台执行mv命令 centos怎么执行sh文件_centos_32


centos 后台执行mv命令 centos怎么执行sh文件_linux_33

centos 后台执行mv命令 centos怎么执行sh文件_centos_34


一次测试多个条件:

centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_35


centos 后台执行mv命令 centos怎么执行sh文件_Shell_36


centos 后台执行mv命令 centos怎么执行sh文件_centos 后台执行mv命令_37


在做多个条件的判断时,是按照从左到右的顺序判断的,如果前一个条件已经足以决定整个条件测试的真或假,那么后面条件就不会被判断。

反转测试:可以用否定来反转测试条件,要用到感叹号( ! )