Java教程

shell 常用语法

本文主要是介绍shell 常用语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux 提供的 cat /etc/shells

Sh 是bash的快捷方式

Centos 默认解析器是bash

 

常用的系统变量:

HOME  PWD SHELL USER

局部变量  和全局变量

#Export 变量名    //可以把变量转为全局变量

$n 特殊变量

$0 代表脚本名称  $1-9 代表第一到第九个参数,十以上的参数要用${}

$# 返回参数个数

$* 所有参数,把所有参数看成一个整体,$@也是代表所有参数但是把每个参数区分对待

 

运算符:

$((运算式)) 或 $[运算式]

Expr + - \* / %   (expr 运算符间要有空格)

例如: expr `expr 2 + 3 ` \* 4    =20

条件判断: 前后要有空格

两个整数间比较:[ ]

-lt 小于 -eq 等于 -ge 大于等于 -le 小于等于 -gt 大于 -ne 不等于

按照文件权限判断:

-r 有读权限  -w 有写权限 -x 有执行权限

按照文件类型判断:

-f 文件存在并且是一个常规的文件  -e 文件存在  -d 文件存在并且是一个目录

多条件判断:

&& 表示当一条命令执行成功后才执行后一条命令,|| 表示上一条执行失败后才执行下条命令

 

流程控制

If判断语句

If [条件判断式];then

  Xxxx

Elif [条件判断式];then

   xxxxxx

Fi

 

case语句

Case $变量名 in

 “值1”)

      Xxxxxx

;;

“值2”)

      Xxxxxx 

;; 

*)

     Xxxxxx

;; 

Esac

 

For 循环语法1

For (( 初始值;循环控制条件;变量变化)) 

 Do  

Xxxxxx

Done

语法2:

For 变量 in 值1 值2 值3  。。。。。

  Do 

     Xxxxxx 

Done

例如:

For i in “$*”

Do

  Echo  结果为 $i 

Done

 

当 for j in “$@”

Do

   Echo $I

Done

注意:当xxx.sh 1 2 3 4  第一个输出 结果为 1 2 3 4

第二个输出:

结果为1

 结果为2

结果为3

 结果为4

 

While 循环:

While [条件判断式]

Do

   Xxxxx

Done

 

Read 读取控制台输入

#read  

-p 指定读取值时的提示符

-t 指定读取值时等待的时间

 

函数:

系统函数:

Basename [string/pathname] ][suffix]

Basename 命令会删掉所有的前缀包括最后一个/字符,然后字符串显示出来

选项:suffix为后缀,如果suffix被指定了basename会将pathname中的suffix去掉

basename  /root/ceshi/ceshi1/test.txt       得到 test.txt

Basename  /root/ceshi/ceshi1/test.txt  .txt   得到 test

 Direname 文件绝对路径(从给定的绝对路径的文件名去除文件名,然后返回剩下的路径)

 dirname  /root/ceshi/ceshi1/test.txt   得到 /root/ceshi/ceshi1

 自定义函数

[function] funname()

 {}

 Funname

函数返回值,只能通过$? 系统变量获得,可以显示增加,return返回,如果不加将以最后一条命令运行结果作为返回值 return 后跟数值n(0-255)

 例如:

 Function sum(){

 S=0

  S=$[$1+$2]

 Echo $s

 }

 Reap -p  “para1:”  p1

 Reap -p  “para2:”  p2

 Sum $p1 $p2

 

 shell工具:

 Cut

 文件中负责剪切数据的,从每一行截切字节、字符和字段并将结果输出

 #cut [选项] filename

 -f 列号 提取第几列

 -d 分隔符 按照分隔符分割列

 获取ip值:

 Ifconfig eth0 |grep “inet addr”|cut -d : -f 2|cut -d “ ” -f 1

 Sed

 是一种流编辑器,一次处理一行内容,处理时把当前处理行存储在临时空间中,接着用sed命令处理缓冲区中的内容,处理完后把内容发送屏幕,接着处理下一行,这样不断重复直到文件末尾。文件内容没有改变

 Sed [选项参数] ‘command’ filename

 -e 直接进行编辑

 -a 新增 下一行出现  -d 删除  s 查找并替换

 

Awk

 一个强大的文本分析工具把文件逐行读入,以空格为默认分隔符将每行切片,切开部分在进行分析处理

 Awk [选项参数] ‘pattern{action1}  pattern{action2}’ filename

 Pattern 表示awk在数据中查找内容就是匹配模式  action 就是找到匹配内容后执行的命令

 -F 指定输入文件分隔符

 -v 赋值一个用户定义变量

 

 Awk 内置变量

 FILENAME  文件名

 NR    已读的记录数

 NF    浏览后 切割的列的个数

 例如:将passwd中第三列的值都加1

Awk -F :  -v  i=1 ‘{print $3+i}’ passwd

 Awk -F :  ‘{print FILENAME ,NR,NF}’ passwd

 

切割ip值

Ifconfig eth0|grep “inet addr” |awk -F :  ‘{print $2}’ |awk -F “ ” ‘{print $1}’

查询空行所在的行号

Awk ‘/^$/{print NR}’ sed.txt

 

Sort

将文件进行排序并将结果标准输出

-n 按照数值大小排序

-r 以相反的顺序来排序

-t 设置排序时所用的分割字符

-k 指定需要排序的列

例如:sort  -t : -nrk 2  passwd

 

这篇关于shell 常用语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!