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组合键时,没有语句被指定执行,所有才去默认处理方式,即立即终止脚本程序。