Shell是什么
- Shell是一个命令行解释器,负责接收用户输入的命令,然后调用Linux内核去执行这些命令,再把执行结果返回给用户,Shell解释器有很多类(csh、ksh、bash、zsh),比如windows上也有powerShell,不同的Shell有些许差异,Linux中默认安装的是Bash
- shell也支持条件判断、分支、定义函数、变量等功能
- shell脚本的扩展名一般以
.sh
结尾,但没有强制要求
应用
- 针对批量的数据文件进行数据的转换、操作、生成报告
- 针对项目环境进行初始化
- 执行定时任务,对系统的状态进行定时检查
cat /etc/shells 查看支持哪些shell
# /etc/shells: valid login shells
/bin/sh 直接执行这些脚本就可以切换shell解释器
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
echo $SHELL 查看环境变量 看使用的哪个shell
/bin/bash
Shell变量
#! /bin/bash 声明使用的解释器
var1=1
var2="is a string"
var3=(1 2 3 4) #定义数组
echo $var1
echo $var2
echo ${var3[0]} #打印某个元素
echo ${var3[@]} #打印数组的所有变量
file=$(ls) #将执行命令的返回值变为一个变量
echo ${file[@]}
echo $0 #脚本名
echo $1 #传的第一个参数
echo $2
echo $3
echo "参数个数$#"
Shell 控制流语句
if 判断
a=30
b=20
if [ $a -gt $b ];then
echo "更大"
fi
if [ $a -gt $b ];then
echo "更大"
else
echo "更小"
fi
for 循环
for num in 1 2 3 4;do
echo "this number is: $num"
done
for file in $(ls) ;do #遍历文件
echo "file is: $file"
done
while 循环
num=1
while (($num<5));do
echo $num
let "num++"
done
case 分支
echo '输入1到4的数字'
echo '你输入的数字为'
read aNum
case $aNum in
1) echo "你选择了1"
;;
2) echo '你选择了2'
;;
3) echo '你选择了3'
;;
4) echo '你选择了4'
;;
*) echo '输入错误'
;;
esac
function 函数
function compare(){
if [ $1 -gt $2 ];then
echo "更大"
else
echo "更小"
fi
}
compare 3 2
Shell重定向
将原有终端中输入和输出的地方定向到其他的地方
在Linux中,所有进程的都默认有3各文件描述符,0 标准输入 1标准输出 2标准错误输出
如果想执行bash脚本得到的结果输出到一个文件里,就可以使用到:
bash test.sh >file.txt # 输出的内容直接覆盖到file文件中
bash test.sh >>file.txt #追加的形式输出到file文件中
bash test.sh 2>>error.log #错误输出到文件中
bash test.sh >>file 2>&1 #错误的信息和正确的信息都输出到文件中