shell笔记--工作中用到的shell(1)
今天完成了一个小的需求,也是入职的第一个需求,功能非常简单,但是对我而言还很陌生。
需求说明:
将特定格式的文本数据批量存入ORACLE数据库
脚本语言:shell
用到shell的几个基本知识点:
①怎么传递参数
$n: $0执行文件名
$1第一个参数
$2第二个参数(依次类推)
②怎么处理参数
$#: 参数个数
$*: 得到所有参数组成一个字符串整体
$@: 输出所有参数,在加""时是类似列表形式(注意与$*的差别)
$?: 脚本执行最后退出状态。0表示没有错误,其他值表示有误
判断参数个数一般写法
if[ $# -ne 2]
then
echo "miss arguments!"
exit -1
fi
③获取主目录
${HOME}
④`**`的用法
**是执行的shell脚本,``包裹后将脚本执行的结果作为变量使用,例如
for filename in `ls $DIR/file*`
do
XXX
done
⑤tail和head命令
tail filename:默认将文件中最后的10条记录输出
tail -n filename: 将文件中最后的n条记录输出
head同理
组合使用:tail -20 filename | head -5 输出倒数20-15条记录
【tail语法】
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。
tail可运行文件一般在/usr/bin/以下。
⑥三目运算
看个例子:
[ ${FILE_NAME%.txt} == ${FILE_NAME} ]&& WORK_DATE=${FILE_NAME:$((LENGTH-8)):8}|| WORK_DATE=${FILE_NAME:$((LENGTH-12)):8}
⑦字符串截取
有很多方法,这里记录用到的。
slice_str=${str:start:length}
⑧sqlplus命令操作ORACLE数据库
命令结构:
sqlplus -s $DBNAME<<!
【SQL语句】
!
注意!!!在for循环体里面使用该命令,sqlplus要与for对齐,没有深入了解原因,反正不对齐就报错。
⑨环境变量
添加export
$ export MYNAME=”my name is lg”
$ echo $ MYNAME my name is lg
浙公网安备 33010602011771号