$ cat killdver.ksh
#!/usr/bin/ksh
#set
current_datetime=`date +%Y%m%d.%H%M%S`
echo current_datetime=$current_datetime
RUNDIR=`dirname $0`
echo RUNDIR=$RUNDIR
BASENAME=`basename $0`
echo BASENAME=$BASENAME
EXTENSION=`echo $BASENAME | awk -F. '{print $NF}'`
echo EXTENSION=$EXTENSION
FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$//g'`
echo FILEBASE=$FILEBASE
LOGFILE=$RUNDIR/logs/${FILEBASE}.$current_datetime
echo LOGFILE=$LOGFILE
MAILFILE=$RUNDIR/logs/${FILEBASE}_mail.$current_datetime
echo MAILFILE=$MAILFILE
CONFFILE=$RUNDIR/${FILEBASE}.conf
echo CONFFILE=$CONFFILE
$ killdver.ksh
current_datetime=20130301.131343
RUNDIR=.
BASENAME=killdver.ksh
EXTENSION=ksh
FILEBASE=killdver
LOGFILE=./logs/killdver.20130301.131343
MAILFILE=./logs/killdver_mail.20130301.131343
CONFFILE=./killdver.conf
$
AWK用法举例:
awk下面的变量NF和$NF有什么区别?
我在看unix及linux下的shell编程这本书
看到awk的时候: {print NF} 也有{print $NF}
前者是输出了域个数,后面的一个是什么意思?
答:
{print $NF}
输出最后一个字段的内容
例子
$ echo $BASENAME
killdver.ksh
$ EXTENSION=`echo $BASENAME | awk -F. '{print NF,$NF}'`
$ echo $EXTENSION
2 ksh
$
SED用法举例
$ BASENAME=killdver.ksh
$ EXTENSION=ksh
$ FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$//g'`
#说明:上面那条语句的作用是把killdver.ksh的结尾的.ksh换成空白,意思就是把文件去掉后缀名
$ echo $FILEBASE
killdver
$ FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$/\.txt/g'`
$ echo $FILEBASE
killdver.txt
$
#说明,上面那条语句的作用是把ksh后缀换成txt后缀
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16423149/viewspace-755037/ ,如需转载,请注明出处,否则将追究法律责任。