shell学习

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=557642




每个命令都会返回一个exit 状态(有时候也叫 return 状态). 成功返回 0, 如果返回一个非 0 值,通常情况下都会被认为是一个错误码.一个编写良好的UNIX命令,程序,和工具都会返回一个0 作为退出码来表示成功.

Linux shell的&&和||
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。

另外$@和$*只能支持九个参数?什么平台的什么shell?
上面所提到的用shift,这样的话会删除前面的参数,而前面的参数在其它函数中要用到的
?搞个临时变量,在shift之前把以后还需要的变量保存到临时变量中

$0获取当前Shell程序的文件名
dirname $0,获取当前Shell程序的路径
cd `dirname $0`,进入当前Shell程序的目录

$# 表示参数有多少参数
$* 表示所有的参数

Shell变量名使用的特殊字符:
$# 传送给命令Shell的参数序号
$- 在Shell启动或使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 所有的参数,每个都用双括号括起
$* 所有参数,用双括号括起
$n 位置参数值,n表示位置
$0 当前shell名

$?表示上一次程序退出值,$?是上一个命令的运行结果,0表示成功,其他值是失败。
你可以自己写一个1.sh脚本如下:
exit 2
然后在命令行下执行该脚本,最后在shell中输入echo $?看看效果
其实就是上一次程序或脚本的退出码,主要是用来判断程序或脚本的执行是否成功,检查出错的原因之类的
33 test -d $log_dir/$date_dir
34 #if [ ${?} -eq 1 ];then
35 /bin/mkdir -p  ${log_dir}/${date_dir} > /dev/null 2>&1
36 #fi


$n        $1 the first parameter,$2 the second...
$#        The number of command-line parameters.
$0        The name of current program.
$?        Last command or function's return value.
$$        The program's PID.
$!        Last program's PID.
$@        Save all the parameters.

linux tee 命令详解


功能说明:读取标准输入的数据,并将其内容输出成文件。

语  法:tee [-ai][--help][--version][文件...]

补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

参  数:
 -a或--append  附加到既有文件的后面,而非覆盖它.
 -i-i或--ignore-interrupts  忽略中断信号。
 --help  在线帮助。
 --version  显示版本信息。


[root@localhost ~]# who | tee who.out
root     pts/0        2009-02-17 07:47 (123.123.123.123)
[root@localhost ~]# cat who.out
root     pts/0        2009-02-17 07:47 (123.123.123.123)
[root@localhost ~]# pwd | tee -a who.out
/root
[root@localhost ~]# cat who.out
root     pts/0        2009-02-17 07:47 (123.123.123.123)
/root
[root@localhost ~]#

猜你喜欢

转载自yingbin920.iteye.com/blog/2003359