shell使用参考示例
1.如下脚本是自己写的一个项目的启动脚本,正好最近在学习shell,就把他写出来供以后参考:
#!/bin/bash
if [ 1 = 0 ];then
cat << HELP
######################################################
run glede program....
######################################################
HELP
fi
#定义函数
help(){
#HELP~HELP的中间部分为输出(省略了大量的echo了)
cat << HELP
This is a function to run oozie
Usage: run -param,example:run -ra
OPTIONS:
-h get help
-rp replace pig file and workflow.xml to new file
-ra run oozie workflow
HELP
exit 0
}
#对HDFS的综合操作
operateHDFS(){
#清空hdfs中指定内容
hadoop fs -rmr workflow
#创建HDFS相关目录
hadoop fs -mkdir workflow/apps/glede/lib
hadoop fs -mkdir workflow/data/glede/input-data
hadoop fs -mkdir workflow/data/glede/output-data
hadoop fs -mkdir workflow/share-lib
#上传文件至HDFS
hadoop fs -copyFromLocal $OOZIE_HOME/share/lib/* workflow/share-lib
hadoop fs -copyFromLocal ../../lib/* workflow/apps/glede/lib
hadoop fs -put ../pig/testData/part-m-00000.lzo workflow/data/glede/input-data
hadoop fs -put ../pig/testData/category.csv workflow/data/glede/input-data
hadoop fs -put ../pig/testData/cat_mapping.csv workflow/data/glede/input-data
hadoop fs -put ../pig/myPig.pig ../workflow.xml ../wf-job.properties workflow/apps/glede;
}
#运行oozie中的工作流
runOozie(){
echo "run a oozie workflow...."
oozie job -oozie http://localhost:11000/oozie -config ../wf-job.properties -run
}
#替代pig和workflow.xml文件
replace(){
hadoop fs -rmr workflow/apps/glede/myPig.pig;
hadoop fs -rmr workflow/apps/glede/clearTable.sh;
hadoop fs -rmr workflow/apps/glede/workflow.xml;
hadoop fs -put ../pig/myPig.pig ../workflow.xml ../job.properties workflow/apps/glede;
hadoop fs -ls workflow/apps/glede;
}
#运行操作HDFS和oozie工作流程
runAll(){
operateHDFS;
runOozie
}
runReplace(){
replace
runOozie
}
#如果参数个数为0,则调用help()函数
if [ $# = 0 ];then
help
fi
#循环遍历参数,做相应处理
while [ -n "$1" ];do
case $1 in
-h)help;shift 1;;#function help is called
-ro)runOozie;shift 1;;
-ra)runAll;shift 1;;
-rp)runReplace;shift 1;;
-*)echo "error:no such option $1. please input -h for help";exit 1;;
# *)break;;
*)echo "error:illegal param,please input correct format param as '-oneParam'";break;;
esac
done