Shell(一)基础知识@你宝爷

tech2022-12-13  94

Shell基础知识

补充:

笔记中特殊符号: 1)' ':待填写的内容;2)。。。:任意数量和运算 Shell中的注释:以#开头

一、变量与运算符

1.变量

1)变量的声明与取值

#①赋值 '变量名' = '变量值。。。' #②取变量的值 $'变量名'

2)变量的参数

$0 #脚本名称 $1 #运行脚本第一个参数 $2 $3 ...以此类推 ${10} #运行脚本第十个以上参数要用 $# #参数的个数,常用于循环 $* #所有参数,值得注意的是:加双引号的"$*"代表参数整体 $@ #所有参数 $? #最后一次命令的返回状态:0:正确执行

2.运算符

#用于计算的变量通常使用运算符包裹 $(('运算式')) $['运算式']

二、条件判断

1.判断格式

#1)基本语法 [ '判断条件' ] #注意判断条件与[]之间要有空格 返回true或false [ -x ... ] [ -a ... -b ] #2)字符串比较 = -n #利用 -n 来判定字符串非空 #3)两个整数之间比较 -lt #小于(less than) -le #小于等于(less equal) -eq #等于(equal) -gt #大于(greater than) -ge #大于等于(greater equal) -ne #不等于(Not equal) #4)按照文件权限进行判断 -r #有读的权限(read) -w #有写的权限(write) -x #有执行的权限(execute) #5)按照文件类型进行判断 -f #文件存在并且是一个常规的文件(file) -e #文件存在(existence) -d #文件存在并是一个目录(directory)

2.三元运算

[ '判断条件' ] $$ '判断为true执行此处' || '判断为false执行此处' [ '判断条件' ] $$ "可以是[ '判断条件' ]" || '也可以是值'

三、流程控制

1.if

#if后要有空格,条件判断式与[]之间要有空格 if [ '条件判断' ] then '执行语句' elif [ '条件判断' ] then '执行语句' else '执行语句' fi

2.case

#1);;对应java case语句中的break #2)*)对应java case语句中default case $'变量名' in "'值1'"'变量的值等于值1,执行此语句 ' ;; "'值2'"'变量的值等于值2,执行此语句 ' ;; # 。。。 *) '变量的值都不是以上的值,执行此语句 ' ;; esac

3.for

#语法格式1 for (( '初始值';'循环控制条件';'变量变化' )) do '执行语句' done #语法格式2 for '变量' in '值1 值2 值3。。。 ' do '执行语句' done

4.while

while [ '条件判断' ] do '执行语句' done

四、输入与输出

1.输入

#-p:提示符,-t:等待时间 #读取输入的字符,给变量名赋值 read -t '输入等待时间' -p '提示内容' '变量名'

2.输出

echo '字符串' echo $'变量名'

五、函数

5.1、系统函数

#1)获取文件名的字符串,可添加文件后缀,输出去掉后缀的文件名 basename '字符串/文件名' '要去掉的文件后缀' #2)获取给定文件路径,去除最后一级的目录/文件名,的字符串 dirname '文件路径'

5.2、自定义函数

#定义函数 [ function ] funname[()] { Action; [return int;] } #调用函数 funname

六、Shell工具

1.cut

#-d:指定切割字符,-f:指定要得到的列,不指定-d默认以Tab分割 cut -d '指定以什么字符进行切割' -f '提取切割的哪几列' '文件名' #可搭配管道符|和grep行过滤,进行迭代切割 cut -d '字符' -f '1,2。。。' '文件名' | grep '过滤字符' | cut -d '字符' -f '1,2。。。' | 。。。

2.awk

#-F:指定分割符,-v:指定变量并赋值,{print '打印内容,可以计算和拼接字符串'。。。},/'正则表达式过滤'/ awk -v i=1 -F: '/^root/{print $3+i","}' '文件名' #以:分割以root开头,打印第3列与1的和末尾拼接',' #内置变量 FILENAME #文件名 NR #已读的记录数 NF #浏览记录的域的个数(切割后,列的个数)

六、正则表达式

1.基本语法

'ls' | grep '正则表达式'

2.常用正则

^'字符A' #以A起始 '字符B'$ #以B结尾 ^$ #空值 . #类似sql中的_ * #类似sql中的%
最新回复(0)