Shell基本用法
作者:互联网
目录
一、shell变量
1、定义变量
变量名和等号之间不能有空格
your_name="runoob.com"
2、使用变量
在变量前加$符号(必选),使用花括号确定边界(可选)
echo ${your_name}
3、使用语句给变量赋值
将/etc目录的文件名循环出来
for file in `ls /etc`
或
for file in $(ls /etc)
4、只读变量
myUrl="https://www.google.com"
# readonly myUrl
myUrl="https://www.runoob.com" #此处变量修改失败
5、特殊变量
$#:shell脚本执行的时候传递参数的个数
$?:上一条命令执行成功之后的返回值
$@:所有的参数
$*:所有的参数
$1 $2 $3:第一个参数 第二个参数 第三个参数
二、获取日期
1、获取一个月前的当天
startDay=`date -d"$now last month" +%Y%m%d`
2、获取本月第一天
nowdate=`date +%Y%m01`
3、获取上个月第一天
startdate=`date -d"$nowdate last month" +%Y%m%d`
4、获取上个月最后一天
enddate=`date -d"$nowdate last day" +%Y%m%d`
5、获取今天
log=$(date -d "now" +%Y-%m-%d)
echo ${log}
6、获取昨天(n天前同理)
log2=$(date -d "1 day ago" +%Y-%m-%d)
echo ${log2}
7、获取具体日期的前几天
log4=$(date -d"15 day ago 2017-04-16" +%Y-%m-%d)
echo ${log4}
8、获取当前时间
echo "`date "+%Y-%m-%d %H-%M-%S"`---程序执行完成!---"
9、截取日期字符串
month=${startDay:0:6}
三、循环语句和条件语句
1、遍历上个月的每一天
#遍历上个月的每一天
while (( $startdate <= $enddate ))
do
echo $startdate
startdate=`date -d "+1 day $startdate" +%Y%m%d`
done
2、判断程序终止
获取传参
#!/bin/bash
day6 = $1
/usr/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--executor-memory 8G \
--executor-cores 2 \
--num-executors 100 \
--driver-memory 16G \
--driver-cores 4 \
--name SYSK_BadEciCombine \
--class com.migu.scala.combine.BadEciCombine \
/home/laizhengyang/new_2.jar \
$day10 \
$day6
if [ $? == 0 ]; then
echo "`date "+%Y-%m-%d %H:%M:%S"`---质差小区合并作业:$day10 $day6,执行完成!"
hadoop fs -du -h /home/sysk_test/output_eci/badEci
fi
elif [ 判断语句 ];then
处理语句
else
echo "不满足质差关联的结束时间:$day6"
fi
四、获取目录下最新的文件名称
hdfs指定目录排序,获取最新文件,按‘/’分割取第六个位置的文件名
day_time=`hadoop fs -ls -t -C /home/sysk_test/output/user_order | head -1 | cut -d '/' -f 6`
echo $day_time
五、常用命令
1、crontab
2、ftp上传下载:mput mget ,prompt off关闭主动模式
3、查找字符串:grep -rnR "target" *
4、文件大小:du -lh --max-depth=1
六、参考链接
1、Shell获取上一个月、星期的时间范围 - 北京流浪儿 - 博客园 (cnblogs.com)
标签:基本,-%,Shell,变量,+%,--,用法,获取,date 来源: https://www.cnblogs.com/leo-lai/p/16470086.html