shell详解五

1.export命令

export命令将作为它参数的变量导出到子shell中,并使之在shell中有效。
1)导出变量
#!/bin/sh

echo "$foo"
echo "$bar"
这个是export2


#!/bin/sh
foo="The first meta-syntactic variable"
export bar="The second meta-syntactic variable"

export2



2.expr命令

expr命令将它的参数当作一个表达式来求值。它的最常见用法就是进行如下形式的最简单数学运算。 x=`expr $x+1`

在最新的脚本程序中,expr命令通常被替换为更有效的$((...))语法。


expr1   |   expr2    如果expr1非零,则等于expr1,否则等于expr2

expr1  &  expr2   只要有一个表达式为零,则等于零,否则等于expr1


expr1  %  expr2    取余



3.printf命令

它的语法:
printf "format string" parameter1 parameter2 ...
转义序列

\\ 反斜线字符
\a 报警
\b 退格字符
\f 进纸换页字符
\n 换行符
\r 回车符
\t 制表符
\v 垂直制表符
\ooo 八进制数值ooo表示的单个字符

字符转换限定符
d 输出一个十进制数字
C 输出一个字符
S 输出一个字符串
% 输出一个%字符


4.set命令

set命令的作用是尾shell设置参数变量,许多命令的输出结果是以空格分隔的值,如果需要使用输出结果中的某个域,这个命令就非常有用。

#!/bin/sh

echo the date is $(date)
set $(date)
echo The month is $2
exit 0



5.shift命令

shift命令把所有参数变量左移一个位置,是$2变成$1,$3变成$2,依次类推。原来的$1的值将被丢弃。
$0保持不变。

6.trap命令
trap命令用于指定在接收到信号后将要采取的行动。trap命令的一种常见用途是在脚本程序被中断时完成清理工作。

信号是指那些被异步发送到一个程序的事件。默认情况下,它们通常会终止一个程序的运行。

trap 命令参数分为两个部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。
trap command signal

信号 说明
HUP(1) 挂起,通常因终端掉线或用户退出而引发
INT(2) 中断,通常因按下Ctrl+C组合键而引发
QUIT(3) 退出,通常因按下Ctrl+\组合键而引发
ABRT(6) 中止,通常因某些严重的执行错误而引发
ALRM(14) 报警,通常用来处理超时
TERM(15) 终止,通常在系统关机时发送


#!/bin/sh

trap  `rm -f  /tmp/my_tmp_file_$$`  INT
echo  creating file  /tmp/my_tmp_file_$$
date > /tmp/my_tmp_file_$$

echo "press interrupt (CTRL-C) to interrupt ..."
while [ -f /tmp/my_tmp_file_$$ ] ; do
       echo  File exists
       sleep 1
done
echo  The file no longer exists

trap  INT
echo  creating file /tmp/my_tmp_file_$$
date > /tmp/my_tmp_file_$$

echo  "press interrupt (control-C)" to  interrupt ....

while [ -f /tmp/my_tmp_file_$$ ] ; do
  echo  File exits
  sleep 1
done

echo  we never get here
exit 0
在这个脚本程序中,我们先用trap命令安排它在出现一个INT中断信号时执行 rm -f /tmp/my_tmp_file_$$命令删除临时文件。脚本程序然后进入一个while循环,只要临时文件存在,循环就一直持续下去,当用户按下Ctrl+C组合键时,就会执行rm -f /tmp/my_tmp_file_$$语句,然后继续下一个循环。因为临时文件现在已经被删除了,所以第一个while循环将正常退出。

接下来,脚本程序再次调用trap命令,这次是指定当一个INT信号出现时不执行任何命令。脚本程序然后重新创建临时文件并进入第二个while循环。这次当用户按下Ctrl+C组合键时,没有语句被指定执行,所有才去默认处理方式,即立即终止脚本程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值