系统相关
首页 > 系统相关> > Shell基本用法

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