shell学习(2)

1、fold -   限制文件行宽

2、fmt - 一个简单的文本格式器

3、压缩文件的时候可以用命令行

压缩:bzip2 +xxx 或者  gzip +xxx

解压缩:bunzip2  +xxx 或者 gunzip +xxx

4、程序设计模式

  • 自顶向下设计:将一个难以完成的任务化分为无数个小块,然后针对每一个小块进行分工合作,最后完成整个项目

5、df -h命令表示磁盘空间的数量

6、shell的文件表达式

    -e file:file存在

    -f  file:file存在并且是一个普通文件

    -d file :file存在并且是一个目录

    -r file:file存在并且可读

    -w file:file存在并且可写

    -x file:file存在并且可执行

7、字符串表达式

    string:string不为null

    -n string:字符串string的长度大于零

    -z string:字符串的长度为零

    string1 = string2 : string1和string2相同,单或双等号都是可以,不过双等号更受欢迎

    string1 == string2

 

    string1 != string2 :string1和string2不相同

    string1 > string2:string1排列在string2之后

    string1 < string2:string1排列在string2之前

警告:这个>和<表达式操作符必须用引号引起来(或者是用反斜杠转义)

8、整型表达式

integer1 -eq integer2    integer1 等于 integer2

integer1 -ne integer2    integer1 不等于 integer2

integer1 -le integer2     integer1 小于或等于 integer2

integer1 -lt integer2      integer1 小于 integer2

integer1 -ge integer2    integer1 大于或等于 integer2

integer1 -gt integer2     integer1 大于 integer2

9、[ [ ] ]

表达式:= ~ 正则匹配

为整数设计:( ( ) )

结合表达式:&&   ||    !

 10、 条件语句

          if ……elif …….elif …….else……..fi 

          if …….. else ……..fi

11、 循环语句

          while commands; do commands; done

          until commands; do commands; done

12、case:分支流程控制

        case xxx in

        a)xxx;

        b)xxx;

        esac

13、$*:展开从1开始的位置参数列起

        “$*”:用一个双引号,把所有的位置参数连接成一个字符串

        $@:展开从1开始的位置参数列起

        “$@“:用一个个双引号,它把每一个用双引号引起的来字符串

shell文本

#!/bin/bash

print_params () {

        echo "\$1 = $1"

        echo "\$2 = $2"

        echo "\$3 = $3"

        echo "\$4 = $4"

}

pass_params () {

        echo  "==========\n" '$* :';     print_params $*

        echo  "==========\n" '"$*" :';   print_params "$*"

        echo  "==========\n" '$@ :';     print_params $@

        echo  "==========\n" '"$@" :';   print_params "$@"

}

pass_params "word" "words with spaces”

输出:

14、for循环

for。。。in。。。;do 。。。;done

 

15、${parameter:-word} 如果parameter没有值或者为空,即为word;否则为paramter

        ${parameter:=word} 如果paramter没有值或者为空,即为word,并且将word赋值给paramter;否则为paramter

        ${parameter:?word} 如果paramter没有值或者为空,word输出为标准错误;否则为paramter

        ${parameter:+word} 如果paramter没有值或者为空,展开结果为空,并且将word替换掉paramter,paramter不会改变

 

16、${!prefix*} 、 ${!prefix@} 会打印出所有prefix开头的环境变量名

17、${#parameter}打印出parameter的字符长度

18、${parameter:offset:length} 可以从parameter字符串提取一部分字符。提取的时候从第offset开始length结束;如果没有legth则直到字符串末尾

        offset为负数,则从末尾开始算起,必须有一个空格与${parameter:-word}区别,即为:${parameter: -word}

19、${parameter#patter} ${parameter##patter}清楚从头部开始的通配符模式,#代表最短,##代表最长

20、${parameter%patter} ${parameter%%patter}清楚从尾部开始的通配符模式,%代表最短,%%代表最长

21、${parameter/pattern/string}

        ${parameter//pattern/string}

        ${parameter/#pattern/string}

        ${parameter/%pattern/string}

        /表示只替换掉匹配string的第一个内容;//表示全部替换匹配string的内容;/#表示匹配出现在开头的string的内容;/%表示匹配出现在结尾的string的内容

22、${parameter,}首字母小写

        ${parameter,,}全部小写

        ${parameter^}首字母大写

        ${parameter^^}全部大写

23、算术求值和展开

        $((number))

24、> :创建

        >>:追加或者是重定向

25、组命令:{ xxx;xxx; [xxx;…] }

        子shell:(xxx;xxx;[xxx;xxx;…])

26、${ }用来作变量替换

        $( )复合变量

27、shell里面的$*,$@,$#,$0,$1...$9表示什么意思

脚本名称叫test.sh 入参三个: 1 2 3

运行test.sh 1 2 3后

$*为"1 2 3"(一起被引号包住)

$@为"1" "2" "3"(分别被包住)

$#为3(参数数量)

$0文件名

$1...$9:参数1...参数9

$?上次返回的状态码

28、单引号( '’  ) :剥夺所有的字符含义,就是一个字符串

        双引号( “ ” ) :对于双引号””内的参数替换($)和命令替换(``)是个例外

        反引号( ` ` ):命令替换,将输出结果暂时保存,在适当的地方输出 

29、单小括号():1.命令组 2.命令替换

        双小括号 (()):1.整数扩展 

        单中括号 [ ]:1.bash的内部命令 2.字符范围 3.条件比较 4.在array结构的上下文

        双中括号[[ ]]:1.bash程序语言的关键字 2.支持字符串的匹配 3.用作条件结构判断 4.bash把双中括号中的表达式看作一个单独的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值