各种Unix环境对ksh的影响(1)
(1) IBM对$0的支持:
IBM机器不支持函数中使用$0代替函数名,它的$0总是代表sh文件的名字,所以不能使用$0来代表函数名.
(2) SUN对awk的支持:
awk的-v可以将shell中的变量传入到awk内部变量,但是SUN的awk不一定支持这个语法,如果要确保支持本语法,可以使用
/usr/xpg4/bin/awk -v key="$key_name" -v value="$svalue"
要注意两点:1.路径 2.-v和变量之间有空格(普通awk没有空格)
(3) SUN对grep的支持:
grep –E 的扩展支持在SUN下必须使用:
/usr/xpg4/bin/grep -E 'Archive| [0-9][0-9]:[0-9][0-9]:[0-9][0-9] '
(4) ~的使用
一般使用~iinscu即可得到iinscu的home目录.但是当把iinscu保存在变量中时,如 user_name=”iinscu”, 无法使用 ~$user_name得到iinscu的home路径.可以使用:
eval “home=~$user_name”
或者使用$user_name在/etc/passwd中查找:
home=`cat /etc/passwd | grep “^${user_name}:” | awk ‘{print $6 }’`
(5) su 某个用户并执行某个sh,输出到/dev/null中.
如 su – informix –c “ls -l >/dev/null 2>&1 “ >/dev/null 2>&1
在sh,csh下会出错,需要指定为ksh
su – infomix –c “ ksh =-c \” ls –l >/dev/null 2>&1 \” “>/dev/null 2>&1
在csh下可能会提示你 “不匹配, 需要将当前sh改成ksh.脚本中需要指定为ksh.