shell知识点梳理

前端之家收集整理的这篇文章主要介绍了shell知识点梳理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. shell的理解

shell程序是文本文件,里面存放的是批量的Linux命令集合。该文件能被shell解释执行。
其一般由Linux命令、shell命令、控制语句及注释语句构成。
shell程序通过 #!/bin/bash#!/bin/sh指定用哪个程序来编译和执行脚本。

2. 变量

变量类型:根据变量的作用域,变量可分为本地变量和环境变量。
有一个是当前用户的环境变量,其所在文件~/.bash_profile
export导出环境变量
source使修改的环境变量文件生效:source .bash_profile
变量赋值:等号两边不能有空格
显示变量:echo $varecho ${var}
清除变量:unset var
显示所有变量:set
环境变量按照惯例需要大写

3. 位置参量

执行的脚步 + 参数 ,这个参数就是位置变量

位置变量 含义
$0 当前脚本的文件
$1~$9 第1个到第9个位置参量
${10} 第10个位置参量
$# 位置参量的个数
$* 已单字符串显示所有位置参量
$@ 未加双引号时与 $*含义相同,加双引号时有区别
$$ 脚本运行的当前进程号
$! 最后一个后台运行的进程的进程号
$? 显示前面最后一个命令的退出状态,0 没有错误,非0 有错误

4.数组

数组定义:arr=(var1 var2 var3)
数组使用:echo ${arr[0]}
数组所有元素: echo ${arr[*]}
数组个数:echo ${#arr[*]}

5. 时间

date
 man date
 date +%Y-%m-%d

在脚本中的写法:

data_time=$(date)
date_time=`date`

一天前

data_time=$(datedate='1 days ago' +%Y-%m-%d)

一天后

data_time=$(datedate='1 days' +%Y-%m-%d)

6.判断

判断有两种方式:test 和 [],常用[]
注意:用判断符号[],注意[]的两端需要有空格来分割,如[ -z “$HOME” ]

a. 判断某个文件类型
例:test –e filename 表示该文件是否存在

符号 含义
–e 表示该文件是否存在
-f 是否是文件
-d 是否是目录

b.判断权限
例:test –r filename 是否可读

符号 含义
-w 是否可写
-x 是否可执行

c.判断两个整数

符号 含义
-eq 两数相等
-ne 两数不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

d.判断字符串
例:
test –z string 判断是否为空,为空,为true
test –n string 判断是否为非空,非空为true
test str1=str2 判断str1与str2是否相等,相等,为true
test str1!=str2 判断str1与str2是否不相等,不相等,为true

符号 含义
–z 判断是否为空,为空,为true
–n 判断是否为非空,非空为true
str1=str2 判断str1与str2是否相等,相等,为true
str1!=str2 判断str1与str2是否不相等,不相等,为true

注意
${TEST:-${TEST_ONE}}
该语句表示,若TEST变量不存在,则执行$TEST_ONE

7. if判断

多个条件判断时的示例:

if [ 条件判断式 ] || [ 条件判断式 ]
if [ 条件判断式  ||  条件判断式 ]

if语句有三种方式,可以嵌套
方式一:

if[ 条件判断式 ];then
执行语句
fi

方式二:

if[ 条件判断式 ];then
执行语句
else
执行语句
fi

方式三:

if[ 条件判断式 ];then
执行语句
elif [ 条件判断式 ];then
执行语句
else
执行语句
fi

8.循环

循环可以通过 for 和 while 实现
a. for循环
示例1:

for var in {1..10}
do
语句
done

实例2:

for((i=0;i<10;i=i+1))
do
s=$((${s}+${i}))
done

更详细的实例:for详细用法
b.while循环

while [ 条件语句 ]
do
语句
done

9.读取文件内容

文件内容
file_name:

hello word

方法一:

while read item_one item_two
do
echo $item_one $item_two
done < /path/file_name

方式二:
文件或命令中逐行读取

while read line
cat /path/file_name | while read line
do
echo $line
done
原文链接:https://www.f2er.com/bash/392913.html

猜你在找的Bash相关文章