正在浏览标签为 脚本 的文章

1、$$变量保存所运行的当前进程的进程号。$0 代表脚本文件名。$# 代表参数的个数、$_变量中存放上一条命令中最后一个参数的值


2、trap 命令可以捕获控制台信号
答:利用trap可以做Ctrl+C结束脚本时需要做的清理操作如:trap "ClearPID" 1 2 3 15


3、tee将信息输出到多个文件
答:echo "ok" | tee -a a.txt >>b.txt


4、查看本机tcp连接状态及数目统计
答:netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -n -k 2 -r


5、IFS变量
答:
IFS用作shell指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空格、新行或tab键。IFS在分隔文件或变量中各域时很有用。下面的例子将IFS设置为冒号,然后echo $PATH变量,给出一个目录分隔开来的可读性很强的路径列表。


6、while循环中最简单写死循环的方法为
答:

while :
do
do someting
done

7、 查出目前 ip_conntrack 记录最多的前五名 IP
答:cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 5


8、linux bash中暂时屏蔽 alias
答:\ 对,正是这个斜线可以暂时屏蔽alias的定义,如:cp -r 就不会再有是否覆盖的提示了。


9、在文件中查找指定内容并且显示该内容,并不是显示内容所在的行
答:利用sed -o参数就可以解决问题了


10、创建/删除多个连续的文件(大括号的应用)
答:利用大括号({})来搞定,如:

$ touch Front-{A,B,C}-Back
$ ls -1
Front-A-Back
Front-B-Back
Front-C-Back
$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
$ ls
2007-01  2007-07  2008-01  2008-07  2009-01  2009-07
2007-02  2007-08  2008-02  2008-08  2009-02  2009-08
2007-03  2007-09  2008-03  2008-09  2009-03  2009-09
2007-04  2007-10  2008-04  2008-10  2009-04  2009-10
2007-05  2007-11  2008-05  2008-11  2009-05  2009-11
2007-06  2007-12  2008-06  2008-12  2009-06  2009-12

11、shell中使用(())进行数字运算
如:

#!/bin/bash
echo -n "how old are you?"
read age
echo "Wow,in $((60-age)) years ,you'll be 60!"

12、shell中读取指定的配置文件并对变量进行赋值
# shell脚本中读取配置文件并做赋值操作

while read NAME TYPE
do
if [ "$NAME" == "" ] || [ "`echo $NAME$TYPE| grep '#'`" != "" ] ;then
continue
else
eval `echo "${NAME}=${TYPE}"`
fi
done

# config.shc 配置文件内容
====== config.shc ========
# 注释内容
变量名 值
===========================
注意:配置文件中的变量名和值之间用Tab分格!


本文最后更新于2010.05.27


原创文章,转载请注明: 转自 http://salogs.com

Shell字符串截取
一、Linux shell 截取字符变量的前8位,有方法如下:

1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}’
3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*’
6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取

1、第一种方法:

    * ${varible##*string} 从左向右截取最后一个string后的字符串
    * ${varible#*string}从左向右截取第一个string后的字符串
    * ${varible%%string*}从右向左截取最后一个string后的字符串
    * ${varible%string*}从右向左截取第一个string后的字符串

“*”只是一个通配符可以不要

例子:
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

三、按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2