SHELL编程

编写sh文件要在第一行加入  #!/bin/bash

 

定义变量:

定义变量直接复制不用定义: A=1

定义只读变量   readonly B=2

默认都是字符串类型    C=1+1   echo $C

不含空格的时候可以直接不用加变量名   D=hello   D="hello world"

 

传递参数:

echo "$0 $1 ....$9"   $0表示脚本名称,$1->$9表示参数

特殊变量echo $#  打印所有参数个数

特殊变量$*  表示命令行中所有参数

特殊变量$@ 表示命令行中所有参数

特殊变量$? 判断最后一次执行返回状态,如果为0表示上一次正常执行,如果不是0表示上一条命令没有正确执行

 

 

 

 

运算符号:

 

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

expr 运算符号要有空格   :expr 2 + 3

$[(2+3)+2]

 

条件判断:

[ condition ] :condition 前后要有空格    [ 23 -ge 22 ]

=

lt

le小于等于

eq等于

 

-r 读权限

-w写权限 [ -w 文件名 ]

-x执行权限

 

 

-f是否是一个常规文件

-e是否存在 [ -e 文件名 ]

-d是否是一个目录

 

多条件判断  $$表示and   ||表示or

 

 

 

流程控制:

条件流程

#!/bin/bash

if [ $1 -eq 1]

then 

    echo "我是1"

elif [ $1 -eq 2]

then

   echo "我是2"

fi

 

 

case流程:

#!/bin/bash

case $1 in

1)

   echo "1"

;;

2)

  echo "2"

;;

*)  

  echo "其他值"

;;

esac

 

 

for循环语句:好像不能运行,不知道哪里错了,明天看一下

 

#!/bin/bash

 

s=0

for ((i=1;i<=100;i++))

do

  s=$[ $s+$i]

  echo $s

done

 

 

 

example.sh

#!/bin/bash

 

for s in $*

do

  echo $s

done

 

sh  example.sh 1 2 3 4

 

while循环:  #下面程序有语法错误,自己细心再检查一下

while [ 条件判断式 ]

do

    echo 

 

done

 

example.sh

s=0

i=1

while [ $i -le 100 ]

do 

  s=$[$s+$i]

  i=$[$i+1]

done

echo $s

 

 

READ读取控制台:

 

read(选项)(参数)

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

-t 指定读取值时的等待时间  (超过时间自动跳过)

参数

读取的变量名

 

#!/bin/bash

read -t 7 -p "input your name" NAME

echo $NAME

 

 

系统函数

bashname函数  截取文件名称   dirname  /a/b/c.txt    返回c.txt

dirname函数  dirname +文件的绝对路径  ;  截取文件路径   dirname /a/b/c.txt 返回/a/b

dirname+bashname就是系统全路径名称

 

 

自定义函数:

 

定义输入两个参数之和函数:

example.sh

#!/bin/bash

function sum()

{

    s=0;

    s=[$1+$2]

    echo $s

}

 

read -p "input your paratemer1" P1  #输入第一个值

read -p "input your paratemer2" P2  #输入第二个值

sum $P1 $P2   #调用求和函数

bash example.sh 

 

shell工具

cut:从一堆文件中剪数据用;cut[ 选项参数 ] filename  

选项参数:-f:列好提取第几列   -d 分割符号,按照指定分隔符分割列

example.txt

beij ing shi

shang hai shi

sheng zheng shi

cut -d " " -f 1 example.txt  或  cut -d " " -f 2 3 example.txt  #按空格切取出第一列文件名为example.txt

 

sed:流编辑器  一次处理一行代码。 sed [选项参数] command filename

-a :新增  -d 删除 -s 查找并替换

将mei nv掺入到example第二行下面

sed "2a mei vn" example.txt

 

将example中的wo提花为ni

sed "s/wo/ni/g" example.txt

 

将第二行删除并将wo提花为ni

sed -e "2d" -e "2d" -e "s/wo/ni/g" sed.txt

 

 

 

awk:强大的文本分析工具 awk[选项参数] pattern{action1} pattern{action2} filename

pattern:表示awk数据中查找内容,就是匹配模式。-F 指定

action:找到匹配内容所执行的一系列命令

 

 

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

sort(选项)(参数)

-n:依照数值大小排序

-r:以相反顺序排序

-t:设置排序

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值