Shell基本语法整理
此文仅作本人学习记录。因为工作中需要写一些自动化脚本,恰好用到是shell语言,于是网上书上随学随用,以下仅作记录。
SHELL脚本
shell脚本以sh后缀名
脚本开头第一行 #!/bin/sh 或 #!/bin/bash
#! 告诉系统执行本脚本要用该符号后面指定的程序;
/bin/sh 可以理解为/bin/bash的精简版
变量
shell中变量不需要申明类型,可直接赋值。注意,等号两边不能有空格
a=123
b=abc
c="I love china" 或 b='I love china' 有空格用引号括起来,单双引号区别见下文
变量输出
echo $a 输出:123
echo "string:$b" 输出:string:abc
echo 'string:$b' 输出:string:$b 单引号不会解释内部变量
echo "string:${b}end" 输出:string:abcend 若写成"string:$bend"程序会误解释为变量bend,因无此变量而输出空
补充:
1/脚本参数赋值
例:test.sh arg1 arg2 ...
在脚本中$0表示脚本名称test.sh, $1表示参数1, $2表示参数2....
故脚本获取参数如:
varg1=$1
varg2=$2
2/命令结果返回赋值
val=`echo abc`
语法
if语句 注意空格
if 空格[空格 表达式 空格];then
...
elif 空格[空格 表达式 空格];then
...
else
...
fi
[]表示条件测试,表达式举例如下
[ "$a" = "$b" ] 字符串比较,注意=号两边要有空格。不等于!=
[ -n "$a" ] -n变量非空。 为空 ! -n或-z
[ 1 -eq 2 ] -数字比较: -eq等于 -ne不等于 -lt小于 -le小于等于 -gt大于 -ge大于等于
[ -f "$file" ] -文件状态校验:f是文件 -d是目录 -e文件或路径存在 -L为链接 -s文件为空
[ -r "$file" ] -文件权限校验:r可读 -w可写 -x可执行
[ "$file1" -nt "$file2" ] -文件新旧比较:文件1比文件2新, -ot 文件1比文件2旧
常用命令
cut -d '分隔符' -c n 第n个字符|-f n 第n个块
sort -t '分隔符' [-k n1,n2] 按n1到n2块排序 -n纯数字排序 -r反向排序 -u去重复
sort text.txt |uniq -c 去除文本中重复值,并显示重复行个数
wc
tr
split
后续继续更新

浙公网安备 33010602011771号