cut awk 字符处理 及 shell的一些语法

cut  使用 将原串通过 符号 分割成行   cut  -d  分割符号 第几行 ( f几  ) ( -f几 )

awk  将原串通过 符号 分割成行       awk  -F  分割符号 "{print $几 }" 默认为空格

 

#!/bin/sh
udpstr=`netstat -anp | grep 7001 | cut -d "*" -f2 | cut -d "/" -f1 '`
if[-z "$udpstr"]
then
  $udpid = ` echo $udpstr | tr -d ' ' `  #去掉空格
  kill "$udpid"
fi


tcpstr=`netstat -anp | grep 7002 | cut -d "*" -f2 | cut -d "/" -f1 '`
if[-z "$tcpstr"]
then
  $tcpid = ` echo $tcpstr | tr -d ' ' `  #去掉空格
  kill "$tcpid"
else
  exit 1
fi

cd /var/www/html/modules/sag_manager/socket
php -q  /var/www/html/modules/sag_manager/socket/socket.server.php
exit $?

 

shell的一些语法:

表 31.4. 常用的位置参数和特殊变量

$0            相当于C语言main函数的argv[0]
$1、$2...     这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv

[2]...
$#           相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
$@           表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
$?           上一条命令的Exit Status
$$           当前Shell的进程号

 用户可以比较两个字符串相等或不等,也可以测试一个串是否赋了值。有关串的操作符如下:
 str1 = str2      当两个串有相同内容、长度时为真
 str1 != str2      当串str1和str2不等时为真
 -n str1        当串的长度大于0时为真(串非空)
 -z str1        当串的长度为0时为真(空串)
 str1         当串str1为非空时为真


1、 set命令

当没有参数的时候,列出系统中所有的自定义变量值;当有参数的时候,重置基本参数如$1、$2等。如set

`date` 将date命令的输出当作输入参数;

 
2、let命令

      执行算术运算。功能如i=j+1,shell语法为:

      let “i=$j+1”,等同于 ‘expr’。 后者只能作用于整数,如 i=`expr $i+1`; 如果使用非整数

,退出状态不为0

 

3、expr  

      expr也有模式匹配功能。

   可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次。
        $value=accounts.doc
        $expr $value : '.*'
   输出:12
   在expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。
       $expr $value : '/(.*/).doc' 在圆括号前加转义符号是表示圆括号是用于提取功能的。
   输出:accounts

 

4、shift命令

       将参数表向左移动一个位置,$2变成$1,...,依次类推。

 

5、shell中可以嵌套命令,使用/`来保护内层命令,如`cd /`pwd/``。

 

6、设置IFS为换行符:IFS=’

’(还真得换行)

 

7、两个特殊操作

     命令1 && 命令2 :只有在命令1执行成功时才执行命令2;

     命令1 || 命令2 :命令1失败才执行命令2;

 

8、变量赋值

     “”引用的字符串需要shell解析其中的``、$、/等特殊字符,而’’引用的字符串则被看作完全的

   字符串,echo ‘`pwd`’将输出`pwd`;而echo “`pwd`”将输出当前目录;

   变量
 含义
 
$var
 Var的值,若无定义则无值
 
${var}
 同上,用于同$varx等类型变量区分
 
${var-thing}
 Var有定义时,取值$var;无定义时取值thing,而$var不变
 
${var=thing}
 Var有定义时,取值$var;无定义时取值thing,$var值设为thing
 
${var?message}
 有定义时取值$var;否则打印message并退出shell,若message为空串,打印var:parameter not set
 
${var+thing}
 有定义时取值thing;否则无值
 


 

9、shell内部变量

      变量
 含义
 
$#
 参数个数
 
$*
 所有参数
 
$@
 同上,稍有区别
 
$-
 Shell的选择项
 
$?
 上次执行命令返回值
 
$$
 Shell的进程标识符
 
$!
 用&启动的最后一个命令的进程标识符
 
$HOME
 cd命令的缺省参数
 
$IFS
 参数分割词的字符表
 
$MAIL
 信件文件,当其改变时给出信息you have mail
 
$PATH
 搜索命令的目录表
 
$PS1
 提示符串,缺省为$
 
$PS2
 后继命令行提示符,缺省为>
 


有关$*和$@得归纳:

 $*和$@扩展为参数,并被重复扫描;参数得空格将字符串分成多个参数;

 “$*”表示shell文件的所有参数及其空格连在一起作为单个词处理;

“$@”与shell文件接收的参数等价,参数中的空格被忽略,其结果是等同于原来参数的一个单词列表。

 

10、 shell模式匹配规则

*      匹配任意字符串,包括空字符串

?      匹配任意单字符串

[ABC]  匹配ABC中任意字符

“…”   完全与…匹配,引号保护特殊字符,也可以写成’…’

/C     匹配C

 

11、 case语句

case word in

  模式1)  命令;;

  模式2)  命令;;

  …

  *)       命令[;;]

esac

只能匹配一个模式

 

12、 if 语句
if 命令
then
else
fi
其中换行很重要,then、else和fi仅在换行或分号之后被识别,else部分可选。可以利用case语句替代if

和test测试语句,对于test命令不是内部命令的情况下,case语句执行的要快;

13、循环
1)for i [in 文件(参数)列表]
do
  循环体
done
如果i后面没有in部分,则隐含地表示对shell文件的全部参数,即$*

2) While 命令
            do
                  循环体,只要命令返回状态为真便继续进行
  done

3)until 命令
do
   循环体,只要命令返回状态为假便继续执行
Done
例如:
While sleep 60
do

Done
每隔60秒执行一次循环中的操作;
   另外,where处的控制命令可以是true、false、或者是:,冒号命令是一个shell内部命令,仅仅计
   算参数值,然后返回“真”,但是它不需要调用系统中的命令,所以效率比true命令高;

4)break命令:退出循环,取自C语言。

14、点号命令:
  将文件作为标准输入,从中读入一行一行的命令在当前shell中执行,不要求文件具有可执行权限;

15、 文件命令习惯,后面加上当前进程号码$$为好

16、标准输入命令read
$read greeting
Hello,world
$echo $greeting
 Hello,world

17、here document 输入

         <<s   从本地输入,直至出现字符串s为止,但是要解析输入中的特殊字符,``,$和/。

    <<’s’ 同上,不进行替换。

    <</s 同上。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值