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

 

后续继续更新

posted @ 2016-08-06 17:33  llspark  阅读(106)  评论(0)    收藏  举报