您的位置:首页 > 运维架构 > Shell

16、常用shell命令方法

2011-08-21 21:33 295 查看
1、shell基本





2、父shell在执行shell命令时,通常是创建子shell,继承父shell环境,执行命令,退出,相关环境销毁;父shell得到子shell的退出状态。

通过命令.或source来使其有当前环境中执行,而不创建子进程。

3、通配符与运算符









4、转义

单引号

硬转义,单引号内的字符就是其字面意义

双引号

会进行变量替换

反单引号----$()

会把命令执行的输出,替换;相当于函数调用,嵌套的变量会一直解析

****/home/edwardlewis/altraman # echo 'date'

date

****:/home/edwardlewis/altraman # echo "date"

date

****:/home/edwardlewis/altraman # echo `date`

Fri Aug 19 07:00:02 CST 2011

5、变量

变量赋值: name=value

变量引用: $name

合法的变量名: 字母、下划线、数字

=号两边不容许有空格(否则可能解析成命令,默认情况下IFS为空格)

$name是${name}的缩写

$?

上一命令的退出状态

$!

最后一个后台进程的pid

$0

当前进程的程序名称

$$

当前进程的进程id号

$n

n为1,2,…n脚本或程序的参数

$@

脚本或程序的所有参数

$#

脚本或程序的参数个数

$UID

当前用户的UID

$LOGNAME

当前用户的用户名

$HOSTNAME

主机名

$RANDOM

1-32767之间随机数

$SECONDS

以消耗的秒数

$PWD

当前工作目录

$OLDPWD

最后一次cd前的工作目录

~

HOME

环境变量env是bash或用户预设值的变量,可以被继承并直接使用;当前变量set。local定义局部变量。

a.永久设置

export name=value

./foobar.sh

b.只对一个命令设置

name=value

./foobar.sh

6、结构语句

1)if

[[ ]] 表达式,测试字符串,文件

(( )) 表达式,测试数字计算结果

命令的退出码($?) 为0时,代表true,执行成功

* 匹配零个或多个任意字符

?匹配一个任意字符

[] 字符组,可以匹配字符组中的一个字符

A|B ,A 或者B

示例程序

i=1;

while (( i <= 10 ));

do

((i++))

done

echo i:${i}

for var in *.html

do

if [[ -h $var ]];

then "Yes"

fi

done

7、函数

调用:需要先定义后调用,名字+参数(和调用一个命令完全一致)

参数:$1,$2,……$#,$@

返回值:标准输出

退出状态:return $num;或最后一个命令的退出状态(尽量在$?中返回失败码)

注意:函数必须先定义,后调用(local可以定义局部变量)

8、块重定向

如if,while语句块,{}

块中共享同一文件描述符(统一重定向)

除非块中自行打开关闭

{

echo msg1

echo msg2

} >> "$log"

9、简要说明echo 和print 有何区别?

① print有返回值,成功就返回1,失败就0,而echo没有返回值

② echo函数中,可以同时输出多个字符串,而在print函数中则只可以同时输出一个字符串。

int print ( string arg)

Outputs arg. Returns 1, always.

void echo ( string arg1 [, string argn...])

Outputs all parameters.

10、其他

ps -ef | grep 'http*' | grep -v 'grep' | wc -l

包含正则表达式尽量用单引号,防止转义。

参考:

【1】 /article/4743269.html

【2】 /article/4743270.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: