1.一入Shell深似海,酷炫外壳惹人爱
可以用Shell来自动化一系列命令,也称之为Shell编程。
一般以rc结尾的多为配置文件,里面包含了软件运行前会去读取并运行的那些初始化命令,例如.bashrc,.vimrc。
切换Shell:chsh命令
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就会把我们的脚本文件运行时的细节打印出来了。
3.Shell的变量(上)
定义变量:message=‘Hello World’ 注意等号两边不要加空格
echo命令:它的作用是在终端上显示传入的信息,如果要插入换行符,那么需要用到-e参数,为了使转义字符发生作用,在句子中也要加入\n,以表示换行。
Bash脚本中,如果要显示一个变量,用echo后接变量名还不够,须在变量名前加上$
单引号:如果变量被包含在单引号里面,那么变量不会被解析,美元符号保持原样输出,因为单引号会忽略被它括起来的所有特殊字符。
双引号:忽略大多数特殊字符,但是不包括:美元符号($),反引号(`),反斜杠(\)。不忽略美元符号意味着Shell在双引号内部可以进行变量名替换。
反引号:要求Shell执行被它括起来的内容
read命令:读取到的文本会立即被储存在一个变量里。
例如:
也可以用read命令一次性给多个变量赋值,read命令一个单词一个单词(单词是用空格分开的)得读取你输入的参数,并且把每个参数赋值给对应变量
例如:
-p参数:显示提示信息
-n参数:可以限制用户输入的字符串的最大长度
-t参数:限制输入时间,超过这个时间,就不读取输入了。
-s参数:隐藏输入内容4.Shell的变量(下)
请牢记:在Bash中,所有的变量都是字符串!
Bash本身不会操纵数字,因此它也不会做运算,这是与其他编程语言不一样的地方。如果要做数学运算,需要用到let命令,let命令可以用于赋值。
环境变量:Shell的环境变量可以被此种Shell的任意脚本程序使用,我们有时候也把环境变量成为全局变量。可以用env命令来显示目前所有的环境变量。
有时候,我们需要自己定义环境变量,可以用export命令来完成。参数变量:可以这样调用我们的脚本文件:./variable.sh 参数1 参数2…
这些个参数1,参数2…被称为参数变量。
可以用shift命令来挪移参数,以便依次处理,因此shift命令常被用在循环中,使得参数一个接一个地被处理。
数组:
会打印出value1。
数组可以包含任意大小的元素数目,数组的元素编号不需要是连续的。
用通配符星号可以输出数组中所有元素的值:echo ${array[*]}
就会输出value0 value1 value2 value55.条件语句
fi表示if语句结束,做这个只有在条件测试为真时才会被执行
方括号[]中的条件测试两边必须要空一格,不能写成[test],而要写成[ test ]
在Shell语言中,等于是用一个等号来表示的。
使用一个定义过的变量,只要在变量名前面加美元符号即可。
测试字符串:
测试数字:
测试文件:
一次测试多个条件:
在做多个条件的判断时,是按照从左到右的顺序判断的,如果前一个条件已经足以决定整个条件测试的真或假,那么后面条件就不会被判断。
反转测试:可以用否定来反转测试条件,要用到感叹号( ! )