经常使用系统变量: shell
$0 当前shell程序的名字 数据库
$1 ~ $9 命令行上的第一到第九个参数 bash
$# 命令行上的参数个数 spa
$* 命令行上的全部参数 命令行
$@ 分别用双引号引用命令行上的全部参数 code
$$ 当前进程的进程标识号(PID) 进程
$? 上一条命令的退出状态 ci
$! 最后一个后台进程的进程标识号 input
系统变量只能引用不能修改! 信 号 it |
说 明 |
HUP(1) |
挂起,一般因终端掉线或用户退出而引起 |
INT(2) |
中断,一般因按下Ctrl+C组合键而引起 |
QUIT(3) |
退出,一般因按下Ctrl+\组合键而引起 |
ABRT(6) |
停止,一般因某些严重的执行错误而引起 |
ALRM(14) |
报警,一般用来处理超时 |
TERM(15) |
终止,一般在系统关机时发送 |
一. trap捕捉到信号以后,能够有三种反应方式:
二. trap对上面三种方式提供了三种基本形式:
第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双
引号中的命令串:
trap 'commands' signal-list
trap "commands" signal-list
第二种形式的trap命令,为了恢复信号的默认操做:
trap signal-list
第三种形式的trap命令容许忽视信号:
trap " " signal-list
在第一种形式中,执行命令,对于双引号和单引号是有区别的。
#/bin/bash #忽略信号 #trap " " 2 #双引号,shell第一次设置信号的时候就执行命令和变量的替换,时间不变 trap "echo `date`:can not terminate by ctrl+C" 2 #单引号,要在shell探测到信号来的时候才执行命令和变量的替换,时间一直变 trap 'echo `date`:can not terminate by ctrl+C' 2 while [ 1 ] do echo -n "input a num : " read num if [ $num -eq -1 ] then echo "bye" break fi echo "you have enter $num" done