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