shell介于人和计算机之间(翻译)
shell的类型 :
/bin/sh 已淘汰
/bin/bash 现在常用的也是Linux的默认shell 管理员
/usr/bin/sh
/usr/bin/bash 现在常用的也是Linux的默认shell 普通用户
默认使用的shell就是bash
查看用户使用的shell /etc/passwd
shell脚本:脚本语言:扩建语言,动态语言,也是编程语言的一种,主要用来控制软件应用程序
都是以文本形式保存,只要在被调用的时候,文本代码才会被解释或者编译,执行
创建脚本的默认格式:.sh 结尾
shell脚本的作用:
1 自动化运维(配合定时任务执行)
2 批量化重复操作可以通过脚本执行,减少人工的重复输入
3 减轻了管理员的工作量
4 提高了处理文件的速度
5 避免配置出错
脚本当中的执行顺序是从上到下,依次按行执行
shell脚本的构成:
1 申明解释器
2 #表示注释。注释掉的代码不会被执行,而且是按行进行注释
3 脚本当中的语句,Linux的可执行命令都可以作为shell脚本的语句
4 脚本当中的语句按照从上到下,依次按行执行
shell的执行方式:
1 赋权执行 执行权限
2 不赋权执行 (脚本调试)
不赋权:
sh脚本名
source脚本名
source命令:点命令 。
对于刚刚修改的文件进行初始化操作(文件的内容都是shell语句,都是可执行的命令)执行source可以不需要重启,使更改内容直接生效
sh:只在当前环境运行,并不涉及子shell环境切换
source 新建一个shell,继续执行。而且所有的执行结果都会保存在这个shell里面
赋权执行:
chmod 777
在当前目录执行./first.sh
不在当前目录要以绝对路径来写/opt/first.sh
不要放在家目录,最好在opt目录当中
结合定时任务执行,必须要绝对路径
重定向:
echo 123 > 123
重定向输出:将标准输出的内容保存到指定的文件,覆盖文件当中的原有内容“>””>>”也是重定向输出,在文件内容的尾部追加,不覆盖文件的原有内容
怎么在shell脚本中定义变量,以及shell脚本的变量类型shell的运算符
变量:面向对象,对象的名称 对象的属性
名称:变量名
属性:变量的值,对象的描述信息
变量的属性:值得类型
int:整数类型
string:字符串类型
布尔:true false 真或假
浮点:1.2 3.4 5.6
变量名=属性值
打印变量值
变量的命令规范(自定义变量)
1 不要用Linux的系统命令作为变量名
2 不要使用中文
3 不要使用特殊符号作为变量名称的开头 可以使用_作为变量的开头
4 默认规则:学生student
5 默认加上注释的,变量名的引用保持前后一致。
自定义变量:
在自定义变量中:整数可以不加“”,字符串类型最好加上“”避免歧义
在给变量赋值时,单引号和双引号一样,不影响变量的值
``:命令替换,先执行反撇号当中的命令,然后再把命令执行的结果赋值给变量
打印变量是,引号的作用 这里不涉及反撇号
打印变量双引号和单引号机制不同
echo “$a”弱引用,原变量的值不变
echo ‘$a’ 强引用,变量值将不在引用,就是$a这个字符串
echo “$a”
“${a}”:保证一定能够正确的识别变量值
变量赋值:
a=1 b=2
read命令的方式获取变量
read -p “提示信息”变量名(给变量名赋值)
变量的作用范围:
默认情况,新定义的变量只在当前的shell环境中生效
全局变量:在整个环境中都能生效
export 变量名=变量值
需要在一整套环境当中引号唯一且不需要变化的变量时,才会声明全局变量
在/etc/profile
环境变量:
系统提前创建,用户也可以添加,设置用户的工作环境,配置系统行为,控制程序执行
特殊的全局变量
用户级环境变量:只对当前用户可见
预定义环境变量:系统预设,所有可以都见,相当于全局变量
自定义的环境变量:特殊的全局变量,只对设置用户有效
$USER 显示用户的名称
$HOME 用户的家目录
$PWD 表示当前所在的工作目录
$PATH 可执行用户程序的默认路径
位置变量:也叫命令行参数,在脚本或者程序运行时,传递个他们的值,而且位置变量在脚本外部传递变量值。
预定义变量:
编程语言或者脚本解释器提供的,不能修改的。只能更具需要进行自动设置或者更新。
$*和$@ 表示命令或者脚本需要处理的参数
$* 和 $@ 不加””的时候表现一致,都会把参数分行处理
$* 加“” 会把命令当做一行处理
$# 显示需要处理的参数个数
$? 表示前一条命令或者脚本执行之后的返回状态码,只有返回0表示执行成功,所有非0全部表示执行失败。也可以用在函数中作为return的返回值
shell脚本中整数的运算方式:+ - * / %
一些运算的格式:
c=$((1+1))
let c=12*5