shell笔记1

  • 标准文件描述符
0:标准输入 1:标准输出 2:标准错误输出

  • 重定向
把命令输出保存到文件:ls -l > lsoutput.txt

把输出内容附加到一个文件:ps >> lsoutput.txt

把标准输出和标准错误输出分别重定向到不同的文件:kill -HUP 1234 >killout.txt  2>killerr.txt

把标准输出和标准错误输出重定向到相同的文件:kill -l 1234 >killouterr.txt  2>&1 (注意操作顺序。含义是:将标准输出定向到文件killouterr.txt,然后将标准错误重定向到标准输出相同的地方)

重定向输入:more < killout.txt

  • 参数扩展与模式匹配

参数形式                                                 扩展后

x{y,z}                                                        xy  xz

${x}{y,z}                                                   ${x}y  ${x}z

${x}{y,$z}                                                 ${x}y  ${x}${z}

${param#pattern}                                     从param前面最小删除pattern的匹配

${param##pattern}                                   从param前面最大删除pattern的匹配

${param%pattren}                                    从param后面最小删除pattern的匹配

${param%%pattern}                                 从param后面最大删除pattern的匹配

${param/pattern/string}                             从param中用string替换pattern的第一次匹配,string可为空

${param//pattern/string}                            从param中用string替换pattern的所有匹配,string可为空

${param:3:2}                                             截取$param中索引3开始的2个字符

${param:3}                                                截取$param中索引3至末尾的字符

${@:3:2}                                                    截取参数列表$@中第3个开始的2个参数

${param:-word} 若$param为空或没有被设置,则参数返回word,$param不变

${param:+word} 若$param不为空,则参数返回word,$param不变

${param:=word} 若$param为空或没有被设置,则参数返回word,同时$param被设置为word

${param:?massage} 若$param为空或没有被设置,则输出错误信息message

  • 条件

test或[命令:为了增强可读性,当使用[命令时,通常会使用符号]来结尾。

注意:必须在[符号和被检查的条件之间留出空格。


字符串比较 结果
string1 = string2 如果两个字符串相同则结果为真

string1 != string2 如果两个字符串不同则结果为真

-n string 如果字符串不为空则结果为真

-z string 如果字符串为空则结果为真


算术比较 结果

a -eq b 如果a、b相等则结果为真

a -ne b 如果a、b不相等则结果为真

a -gt b 如果a大于b则结果为真

a -ge b 如果a大于等于b则结果为真

a -lt b 如果a小于b则结果为真

a -le b 如果a小于等于b则结果为真

! expression 如果表达式为假则结果为真


文件调价测试 结果

-d file 如果文件是一个目录则结果为真

-e file 如果文件存在则结果为真,因为不可移植,通常用-f代替

-f file 如果文件存在则结果为真

-g file 如果文件的set-group-id位被设置则结果为真

-r file 如果文件可读则则结果为真

-s file 如果文件的大小不为0,则结果为真

-u file 如果文件的set-user-id位被设置则结果为真

-w file 如果文件可写则结果为真

-x file 如果文件可执行则结果为真


  • for语句

for foo in bar fud 43

do

    echo $foo

done

for file in $(ls f*.sh);do

      lpr $file

done

  • case语句

case variable in

    pattern [ | pattern ] ) statements;;

    pattern [ | pattern ] ) statements;;

 ....

esac

  • AND列表

statement1 && statement2 && statement3 && ...

从左开始顺序执行每条命令,如果前一条命令返回的是TRUE,它的右边的下一条命令才能够执行。如此持续直到有一条命令返回FALSE,或者列表中所有命令都执行完毕。&&的作用是检查前一条命令的返回值。只有列表中的所有命令都执行成功,才算执行成功,否则就算它失败。

  • OR列表

statement1 || statement2 || statement3 || ...

从左开始顺序执行每条命令,如果前一条命令返回的是FALSE,它的右边的下一条命令才能够执行。如此持续直到有一条命令返回TRUE,或者列表中所有命令都执行完毕。&&的作用是检查前一条命令的返回值。只有列表中的有一条命令执行成功,才算执行成功。

  • expr命令

expr命令将它的参数当作一个表达式来求值,通常用$(( ))来替代。

x=`expr $x + 1`    反引号` `使x的取值为命令expr $x + 1的执行结果。

x=$(expr $x + 1)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值