互联网服务shell

shell编程一些技巧

看到别人整理过的很好,自己收藏。呵呵

Shell技巧



  1.    test测试命令
  2.    test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,
  3.    其测试符和相应的功能分别如下:
  4.    (1)数值测试:
  5.    -eq:等于则为真
  6.    -ne:不等于则为真
  7.    -gt:大于则为真
  8.    -ge:大于等于则为真
  9.    -lt:小于则为真
  10.-le:小于等于则为真
  11.(2)字符串测试:
  12.=:等于则为真
  13.!=:不相等则为真
  14.-z 字符串:字符串长度伪则为真
  15.-n 字符串:字符串长度不伪则为真
  16.(3)文件测试:
  17.-e 文件名:如果文件存在则为真
  18.-r 文件名:如果文件存在且可读则为真
  19.-w 文件名:如果文件存在且可写则为真
  20.-x 文件名:如果文件存在且可执行则为真
  21.-s 文件名:如果文件存在且至少有一个字符则为真
  22.-d 文件名:如果文件存在且为目录则为真
  23.-f 文件名:如果文件存在且为普通文件则为真
  24.-c 文件名:如果文件存在且为字符型特殊文件则为真
  25.-b 文件名:如果文件存在且为块特殊文件则为真
  26.另外,Linux还提供了与(“!”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来,
  27.其优先级为:“!”最高,“-a”次之,“-o”最低。
  28.同时,bash也能完成简单的算术运算,格式如下:
  29.$[expression]
  30.例如:var1=2
  31.var2=$[var1*10+1]
  32.则:var2的值为21。
  33.
  34.2.if条件语句
  35.if [ -x /sbin/quotaon ]; then
  36.echo "Turning on Quota for root filesystem"
  37./sbin/quotaon /
  38.elif [ -x /sbin/quotaon ]; then
  39./usr/bin/bash
  40.else
  41.echo "ok"
  42.fi
  43.
  44.3.for 循环
  45.#!/bin/sh
  46.WORD="a b c d e f g h i j l m n o p q r s t u v w x y z"
  47.for i in $WORD ; do
  48.echo $i
  49.done
  50.
  51.#!/bin/sh
  52.FILES=`ls /txt/*.txt`
  53.for txt in $FILES ; do
  54.doc=`echo $txt | sed "s/.txt/.doc/"`
  55.mv $txt $doc
  56.done
  57.
  58.4.while和until 循环
  59.#!/bin/sh
  60.while [ -f /var/run/ppp0.pid ] ; do
  61.killall pppd
  62.done
  63.
  64.#!/bin/sh
  65.until [ -f /var/run/ppp0.pid ] ; do
  66.sleep 1
  67.done
  68.
  69.Shell还提供了true和false两条命令用于建立无限循环结构的需要,
  70.它们的返回状态分别是总为0或总为非0
  71.
  72.5.case 条件选择
  73.#!/bin/sh
  74.case $1 in
  75.start | begin)
  76.echo "start something"
  77.;;
  78.stop | end)
  79.echo "stop something"
  80.;;
  81.*)
  82.echo "Ignorant"
  83.;;
  84.esac
  85.case表达式中也可以使用shell的通配符(“*”、“?”、“[ ]”)。
  86.
  87.6.无条件控制语句break和continue
  88.break 用于立即终止当前循环的执行,而contiune用于不执行循环中后面的语句
  89.而立即开始下一个循环的执行。这两个语句只有放在do和done之间才有效。
  90.
  91.7.函数定义
  92.在shell中还可以定义函数。函数实际上也是由若干条shell命令组成的,
  93.因此它与shell程序形式上是相似的,不同的是它不是一个单独的进程,
  94.而是shell程序的一部分。函数定义的基本格式为:
  95.functionname
  96.{
  97.若干命令行
  98.}
  99.调用函数的格式为:
  100.            functionname param1 param2 ……
  101.            shell函数可以完成某些例行的工作,而且还可以有自己的退出状态,
  102.            因此函数也可以作为if、while等控制结构的条件。
  103.            在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时
  104.            shell将把这些参数分别赋予相应的位置参数$1、$2、...及$*。
  105.            
  106.            8.命令分组
  107.            在shell中有两种命令分组的方法:“()”和“{}”,前者当shell执行()
  108.            中的命令时将再创建一个新的子进程,然后这个子进程去执行圆括弧中的命令。
  109.            当用户在执行某个命令时不想让命令运行时对状态集合(如位置参数、环境变量、
  110.            当前工作目录等)的改变影响到下面语句的执行时,就应该把这些命令放在圆括
  111.            弧中,这样就能保证所有的改变只对子进程产生影响,而父进程不受任何干扰;
  112.            {}用于将顺序执行的命令的输出结果用于另一个命令的输入(管道方式)。当我们
  113.            要真正使用圆括弧和花括弧时(如计算表达式的优先级),则需要在其前面加上转
  114.            义符()以便让shell知道它们不是用于命令执行的控制所用。
  115.            
  116.            9.信号
  117.            trap命令用于在shell程序中捕捉到信号,之后可以有三种反应方式:
  118.            (1)执行一段程序来处理这一信号
  119.            (2)接受信号的默认操作
  120.            (3)忽视这一信号
  
121.
参与13

13同行回答

20080107552008010755软件开发工程师交通运输部规划研究院
回复 1# lzj65166     shell感觉好麻烦的一个东西,而且还很有用显示全部
回复 1# lzj65166


    shell感觉好麻烦的一个东西,而且还很有用收起
互联网服务 · 2013-12-10
浏览1526
mdl9630mdl9630系统运维工程师西安民航凯亚科技
顶顶顶!显示全部
顶顶顶!收起
轨道交通 · 2013-12-09
浏览1505
orclflyorclfly软件开发工程师sl
ding ding ding显示全部
ding ding ding收起
互联网服务 · 2013-11-18
浏览1555
xhhxhh软件开发工程师hw
ding ding ding显示全部
ding ding ding收起
互联网服务 · 2010-08-21
浏览1881
ec_gocomec_gocom系统管理员荆州
帅哥,有没有shell编程的基础教程啊,我是完全不会,不敢看技巧啊!!!发到我的信箱 [email]gocom@163.com[/email] 越基础越好,我想学啊!显示全部
帅哥,有没有shell编程的基础教程啊,我是完全不会,不敢看技巧啊!!!

发到我的信箱 [email]gocom@163.com[/email]
越基础越好,我想学啊!收起
政府机关 · 2010-04-22
浏览1985
allanwangallanwangADMINIBM
有用,有用,收藏起来先!显示全部
有用,有用,收藏起来先!收起
IT分销/经销 · 2009-07-30
浏览1925
fdisk1fdisk1工程师山东上海
想说SHELL爱你太难,在等一万年以后吧显示全部
想说SHELL爱你太难,在等一万年以后吧收起
IT分销/经销 · 2009-04-12
浏览1942
it_civilianit_civilian技术经理sap
不错,学习了。多谢!显示全部
不错,学习了。多谢!收起
IT分销/经销 · 2009-04-09
浏览1932
xjliblyqxjliblyq工程师西凌网络公司
学习中   谢谢楼主了显示全部
学习中   谢谢楼主了收起
IT分销/经销 · 2009-04-07
浏览1943
doroughdorough技术经理中石油
学习一下学习一下学习一下学习一下显示全部
学习一下学习一下学习一下学习一下收起
互联网服务 · 2009-04-04
浏览1984

提问者

lzj65166
软件开发工程师北京九合尚品科技有限公司
擅长领域: 服务器AIXUnix

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-04-02
  • 关注会员:0 人
  • 问题浏览:10896
  • 最近回答:2013-12-10
  • X社区推广