SHELL 学历笔记

Shell
变量
变量名区分大写小,规范大写,$变量名获取
$变量名
${变量名}
变量名不能以数字开头
等号两边不能有空格
命令复制给变量: `` , $()
交互式变量赋值:read -n -p -t 变量名
declare 给变量赋予属性(只读,整形, x 环境变量)
本地变量,全局变量,环境变量,系统变量
四则运算
$(())
expr
let
$[]
dirname:当前脚本目录
basename:文件名
流程控制
条件控制
[ 表达式 ]
test 表达式
[[ 表达式 ]] : 当判断字符串是否为空时,用此方式
整数判断
-eq
-ne
-ge
-le
-gt
多重判断
逻辑与: a / &&
逻辑或: o / ||
if
if [ condition ];then
.....
fi
if...elif...else
for
循环方式
列表循环
a b c
{1.10} {1,2,10}
seq 10/seq 2 10/seq 1 2 10
不带列表循环
for x (x 为参数个数)
类C 风格循环
for (( expr1,expr2,expr3 ))
do
command
done
for((i=1;i<5;i++))
while
until
case
数组
定义
普通数组:数字作为索引下标
关联数组:字符作为索引下标(declare -A 数组名)
初始化
数组名[index]=value
数组名=(value1 value2 value3)
关联数组一次初始化多个值:declare -A sy1=([s]=s1 [s s]=sy2 [y]=sy3)
数组获取
获取数据元素:${数据组名[index/*]}
元素个数:${#数字名[*]}
关联数组获取全部元素下标:echo ${!数组名[*]}
sed
命令行模式
1. 所有命令再单引号里
脚本模式
sed -f 脚本.sh
e: 多项编辑
r:扩展正则
i: 修改源文件
awk
格式:awk 选项 '命令' 文件
选线:
F : 定义分隔符,默认是空格
v:定义变量并赋值(使用变量不需要加$)
内部变量
$0
$1,$2,$3....
NF 当前列数
$NF 最后一列
FNR/NR 行号
FS:定义间隔符
OFS:定义输出间断分隔符,默认是空格
RS: 输入记录分隔符
流程控制
if
{if(表达式){执行语句1;语句2} }
{if(表达式){语句1;语句2;...} else {语句1;语句2;...}}
awk '{for();}'

猜你喜欢

转载自www.cnblogs.com/shaoyu19900421/p/13381403.html