<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[cut awk 字符处理 及 shell的一些语法]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 07 Dec 2009 08:03:53 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	cut&nbsp;&nbsp;使用 将原串通过 符号 分割成行&nbsp;&nbsp; cut&nbsp;&nbsp;-d&nbsp;&nbsp;分割符号 第几行 ( f几&nbsp;&nbsp;) ( -f几 )<br/><br/>awk&nbsp;&nbsp;将原串通过 符号 分割成行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; awk&nbsp;&nbsp;-F&nbsp;&nbsp;分割符号 "&#123;print $几 &#125;" 默认为空格<br/><br/>#!/bin/sh<br/>udpstr=`netstat -anp &#124; grep 7001 &#124; cut -d "*" -f2 &#124; cut -d "/" -f1 '`<br/>if[-z "$udpstr"]<br/>then<br/>&nbsp;&nbsp;$udpid = ` echo $udpstr &#124; tr -d ' ' `&nbsp;&nbsp;#去掉空格<br/>&nbsp;&nbsp;kill "$udpid"<br/>fi<br/><br/><br/>tcpstr=`netstat -anp &#124; grep 7002 &#124; cut -d "*" -f2 &#124; cut -d "/" -f1 '`<br/>if[-z "$tcpstr"]<br/>then<br/>&nbsp;&nbsp;$tcpid = ` echo $tcpstr &#124; tr -d ' ' `&nbsp;&nbsp;#去掉空格<br/>&nbsp;&nbsp;kill "$tcpid"<br/>else<br/>&nbsp;&nbsp;exit 1<br/>fi<br/><br/>cd /var/www/html/modules/sag_manager/socket<br/>php -q&nbsp;&nbsp;/var/www/html/modules/sag_manager/socket/socket.server.php<br/>exit $?<br/><br/>shell的一些语法：<br/><br/>表 31.4. 常用的位置参数和特殊变量<br/><br/>$0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相当于C语言main函数的argv[0]<br/>$1、$2...&nbsp;&nbsp;&nbsp;&nbsp; 这些称为位置参数（Positional Parameter），相当于C语言main函数的argv[1]、argv<br/><br/>[2]...<br/>$#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于C语言main函数的argc - 1，注意这里的#后面不表示注释<br/>$@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示参数列表"$1" "$2" ...，例如可以用在for循环中的in后面。<br/>$?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上一条命令的Exit Status<br/>$$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前Shell的进程号<br/><br/>　用户可以比较两个字符串相等或不等，也可以测试一个串是否赋了值。有关串的操作符如下:<br/>　str1 = str2　　　　　　当两个串有相同内容、长度时为真<br/>　str1 != str2　　　　　 当串str1和str2不等时为真<br/>　-n str1　　　　　　　 当串的长度大于0时为真(串非空)<br/>　-z str1　　　　　　　 当串的长度为0时为真(空串)<br/>　str1　　　　　　　　 当串str1为非空时为真<br/><br/><br/>1、 set命令<br/><br/>当没有参数的时候，列出系统中所有的自定义变量值；当有参数的时候，重置基本参数如$1、$2等。如set<br/><br/>`date` 将date命令的输出当作输入参数；<br/><br/> <br/>2、let命令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;执行算术运算。功能如i=j+1,shell语法为：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let “i=$j+1”，等同于 ‘expr’。 后者只能作用于整数，如 i=`expr $i+1`； 如果使用非整数<br/><br/>，退出状态不为0<br/><br/>3、expr&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expr也有模式匹配功能。<br/><br/>&nbsp;&nbsp; 可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value=accounts.doc<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$expr $value : '.*'<br/>&nbsp;&nbsp; 输出：12<br/>&nbsp;&nbsp; 在expr中可以使用字符串匹配操作，这里使用模式. d o c抽取文件附属名。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $expr $value : '&#92;(.*&#92;).doc' 在圆括号前加转义符号是表示圆括号是用于提取功能的。<br/>&nbsp;&nbsp; 输出：accounts<br/><br/>4、shift命令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将参数表向左移动一个位置，$2变成$1,...，依次类推。<br/><br/>5、shell中可以嵌套命令，使用&#92;`来保护内层命令，如`cd &#92;`pwd&#92;``。<br/><br/>6、设置IFS为换行符：IFS=’<br/><br/>’（还真得换行）<br/><br/>7、两个特殊操作<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 命令1 && 命令2 ：只有在命令1执行成功时才执行命令2；<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 命令1 &#124;&#124; 命令2 ：命令1失败才执行命令2；<br/><br/>8、变量赋值<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; “”引用的字符串需要shell解析其中的``、$、&#92;等特殊字符，而’’引用的字符串则被看作完全的<br/><br/>&nbsp;&nbsp; 字符串，echo ‘`pwd`’将输出`pwd`；而echo “`pwd`”将输出当前目录；<br/><br/>&nbsp;&nbsp; 变量<br/> 含义<br/> <br/>$var<br/> Var的值，若无定义则无值<br/> <br/>$&#123;var&#125;<br/> 同上，用于同$varx等类型变量区分<br/> <br/>$&#123;var-thing&#125;<br/> Var有定义时，取值$var；无定义时取值thing，而$var不变<br/> <br/>$&#123;var=thing&#125;<br/> Var有定义时，取值$var；无定义时取值thing，$var值设为thing<br/> <br/>$&#123;var?message&#125;<br/> 有定义时取值$var；否则打印message并退出shell，若message为空串，打印var:parameter not set<br/> <br/>$&#123;var+thing&#125;<br/> 有定义时取值thing；否则无值<br/> <br/><br/><br/> <br/><br/>9、shell内部变量<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;变量<br/> 含义<br/> <br/>$#<br/> 参数个数<br/> <br/>$*<br/> 所有参数<br/> <br/>$@<br/> 同上，稍有区别<br/> <br/>$-<br/> Shell的选择项<br/> <br/>$?<br/> 上次执行命令返回值<br/> <br/>$$<br/> Shell的进程标识符<br/> <br/>$!<br/> 用&启动的最后一个命令的进程标识符<br/> <br/>$HOME<br/> cd命令的缺省参数<br/> <br/>$IFS<br/> 参数分割词的字符表<br/> <br/>$MAIL<br/> 信件文件，当其改变时给出信息you have mail<br/> <br/>$PATH<br/> 搜索命令的目录表<br/> <br/>$PS1<br/> 提示符串，缺省为$<br/> <br/>$PS2<br/> 后继命令行提示符，缺省为><br/> <br/><br/><br/>有关$*和$@得归纳：<br/><br/> $*和$@扩展为参数，并被重复扫描；参数得空格将字符串分成多个参数；<br/><br/> “$*”表示shell文件的所有参数及其空格连在一起作为单个词处理；<br/><br/>“$@”与shell文件接收的参数等价，参数中的空格被忽略，其结果是等同于原来参数的一个单词列表。<br/><br/>10、 shell模式匹配规则<br/><br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配任意字符串，包括空字符串<br/><br/>?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配任意单字符串<br/><br/>[ABC]&nbsp;&nbsp;匹配ABC中任意字符<br/><br/>“…”&nbsp;&nbsp; 完全与…匹配，引号保护特殊字符，也可以写成’…’<br/><br/>&#92;C&nbsp;&nbsp;&nbsp;&nbsp; 匹配C<br/><br/>11、 case语句<br/><br/>case word in<br/><br/>&nbsp;&nbsp;模式1)&nbsp;&nbsp;命令;;<br/><br/>&nbsp;&nbsp;模式2)&nbsp;&nbsp;命令;;<br/><br/>&nbsp;&nbsp;…<br/><br/>&nbsp;&nbsp;*)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令[;;]<br/><br/>esac<br/><br/>只能匹配一个模式<br/><br/>12、 if 语句<br/>if 命令<br/>then<br/>else<br/>fi<br/>其中换行很重要，then、else和fi仅在换行或分号之后被识别，else部分可选。可以利用case语句替代if<br/><br/>和test测试语句，对于test命令不是内部命令的情况下，case语句执行的要快；<br/><br/>13、循环<br/>1）for i [in 文件（参数）列表]<br/>do<br/>&nbsp;&nbsp;循环体<br/>done<br/>如果i后面没有in部分，则隐含地表示对shell文件的全部参数，即$*<br/><br/>2） While 命令<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;循环体，只要命令返回状态为真便继续进行<br/>&nbsp;&nbsp;done<br/><br/>3）until 命令<br/>do<br/>&nbsp;&nbsp; 循环体，只要命令返回状态为假便继续执行<br/>Done<br/>例如：<br/>While sleep 60<br/>do<br/>…<br/>Done<br/>每隔60秒执行一次循环中的操作；<br/>&nbsp;&nbsp; 另外，where处的控制命令可以是true、false、或者是:，冒号命令是一个shell内部命令，仅仅计<br/>&nbsp;&nbsp; 算参数值，然后返回“真”，但是它不需要调用系统中的命令，所以效率比true命令高；<br/><br/>4）break命令：退出循环，取自C语言。<br/><br/>14、点号命令：<br/>&nbsp;&nbsp;将文件作为标准输入，从中读入一行一行的命令在当前shell中执行，不要求文件具有可执行权限；<br/><br/>15、 文件命令习惯，后面加上当前进程号码$$为好<br/><br/>16、标准输入命令read<br/>$read greeting<br/>Hello,world<br/>$echo $greeting<br/> Hello,world<br/><br/>17、here document 输入<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <<s&nbsp;&nbsp; 从本地输入，直至出现字符串s为止，但是要解析输入中的特殊字符，``，$和&#92;。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<<’s’ 同上，不进行替换。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<<&#92;s 同上。
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] cut awk 字符处理 及 shell的一些语法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>