常用关系运算符
-eq(=)
-ne(!=)
-gt(>)
-lt(<)
-ge(>=)
-le(<=)
-n不为空
-z为空
-f判断文件是否存在
-r 判断文件或目录是否有读权限
-w 判断文件或目录是否有写权限
-x 判断文件或目录是否有执行权限
-d 判断目录是否存在
常用命令
0:标准输入
1:标准输出
2:标准出错
2>&1 将标准出错重定向到标准输出
> /dev/null 将stdout送到/dev/null里面,即不打印
return 0 正确返回
return1 错误返回
$? 保存上一条命令的执行状态,0表示命令执行成功,1表示命令执行失败
echo ${str_UserName_Tmp}| awk -F "\"" '{print $4}'
将str_UserName_Tmp中的内容以"分隔,取第四个
${0}或$0表示脚本名称或函数名称
${1}或$1表示脚本名称或函数的第一个参数
依此类推,支持0~9共10个位置参数
脚本名称叫test.sh入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1""2" "3"(分别被包住)
$#为3(参数数量)
语法: basename目录/文件名.后缀 [后缀]
描述: 从给定的包含绝对路径的文件名中去除左边目录部分,返回剩下的 文件名.后缀 或者同时去除文件的后缀名,返回文件名(需指定[后缀]参数)
例:
(1)#basename /usr/local/share/doc/foo/foo.txt
执行结果foo.txt
(2)#basename /usr/local/share/doc/foo/foo.txt .txt
执行结果foo
语法:dirname目录/文件名.后缀
描述:从给定的包含绝对路径的文件名中去除 文件名.后缀,然后返回剩下的路径(目录部分)
例:
(1)#dirname /usr/home/drobbins
执行结果/usr/home
(2)#dirname /boot/grub/grub.conf
执行结果/boot/grub
set-x/sh -x -x调试用,把脚本中每条命令的执行情况打印出来
cut-d'/' -f4以'/'为分隔符,第四个域的内容
echo "aa bb cc" | awk -F '{print $1}' 结果就是aa,意思是把字符串按空格分割,取第一个
typeset的使用
http://blog.csdn.net/zhao8899/article/details/5366752
awk '{print $2}' $fileName
一行一行的读取指定的文件,以空格作为分隔符,打印第二个字段
//关闭当前进程打开的socket
INT closesocket(pid_t nPid)
{
CHAR szFilterCMD[256] = {0};
snprintf(szFilterCMD, 256,"tree /proc/%d/fd | grep socket | grep -v grep | gawk '{print $2}'", nPid);
szFilterCMD[255] = 0;
FILE *pipeCMD = popen(szFilterCMD, "r");
if ( NULL == pipeCMD)
{
return (-1);
}
#ifndef MAX_LINE
#define MAX_LINE 1024
#endif
while(TRUE)
{
CHAR szLine[MAX_LINE] = {0};
if(0 == fgets(szLine,MAX_LINE, pipeCMD))
{
break;
}
szLine[MAX_LINE - 1] = 0;
close(atoi(szLine));
}
if(-1 == pclose(pipeCMD))
{
return (-1);
}
return 0;
}
其他
1.引号的使用
双引号:部转义符关闭某些则保留(:$ )
反引号:反引号内作系统命令并执行