大数据学习(二), shell

  一:shell案例

      1.1:单引号和双引号的区别  " "    ' '

对于常规的字符串定义变量值应添加双引号,并且等号后不能 有空格,需要强引用的,则需要单引号,需要命令引用的使用反引号。

单引号:所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的什么就输出什么,这成为强引用。

双引号:输出双引号的所有内容;如果内容中有命令(要反引)、变量、特殊转义,会先把变量、命令、转义字符解析出结果,然后在输出最终内容,这称为弱引。

反引号:一般用于命令,执行的时候命令会被执行,相当于$(),赋值和输出都要用反引号引起来。

      1.2:字符串运算符

          下面列出常用的字符串运算符,假定变量a为“abc”,变量b为“efg”

运算符  说明 举例
= 检测两个字符是否相等,相等返回true [ $a = $b ] 返回 false

!= 检测两个字符串是否相等,不相等返回 true [ $a != $b ] 返回 true
-z 检测字符串长度是否为0,为零则返回true [ -z $a ] 返回 false
-n 检测字符串长度是否不为0,不为零则返回true [ -n "$a" ] 返回 true
$ 检测字符串是否为空,不为空返回 true [ $a ] 返回 true

 

      1.3:文件检测运算符

操作符 说明 举例
-d file 检测文件是否是目录,如果是,则返回true [ -d $file ] 返回false
-f file 检测文件是否是普通文件,如果是,则返回true [ -f $file ] 返回true
for file in /root/*
do
        if [ -f $file ]
        then
                echo $file
        fi
done

 

       1.4:${ } :变量替换  

[root@localhost log]# var=/dir1/dir2/file.txt
[root@localhost log]# echo ${var##*/}
file.txt
[root@localhost log]# echo ${var%/*}
/dir1/dir2

 

       1.5:判断字符和数字

              1.5.1:方法一,判断字符串、正数、

if [ "$1" -eq 0 ] 2>/dev/null
then
        echo "输入0"
elif [ "$1" -gt 0 ] 2>/dev/null
then
        echo "输入正数"
elif [ "$1" -lt 0 ] 2>/dev/null
then
        echo "输入负数"
else
        echo '输入字符' 
fi

/dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),
读取它则会立即得到一个EOF。 在程序员行话,尤其是Unix行话中,
/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,
或作为用于输入流的空文件。当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。

          1.5.2:正则

#!/bin/bash

read -p "please input a number: " number

if [[ $number =~ ^[0-9]+$ ]] || [[ $number =~ ^-[0-9]+$ ]];then
    echo "correct"
else
    echo "error"
fi

 

      2:shell函数

  •  可以带function fun() 定义,也可以直接fun() 定义,不带任何参数
  • 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。
    demoFun(){
        echo "这是我的第一个 shell 函数!"
    }
    echo "-----函数开始执行-----"
    demoFun
    echo "-----函数执行完毕  

 

 

        3.linux定时任务 crontab

              crontab 定时任务的守护进程,精确到分

          crontab  [选项]

  •           -e  :  编辑crontab 定时任务
  •           -l   :查询crontab任务
  •                             -r   : 删除当前用户所有的crontab任务

          说明:

 *     *   *     *     *     命令

分钟     小时     天       月       星期       命令
项目 含义 范围
第一个* 一个小时当中的第几分钟 0-59
第二个* 一天当中的第几个小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几个月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)
特殊符号 含义
* 代表任何时间,比如第一个*就代表一个小时中每分钟都执行一次
代表不连续的时间,如“0 8,12,16 * * * 命令”,就代表每天8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0  5   *  *  1-6  命令”  代表在周一带周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次,比如“ */10 * * * * 命令” 代表每隔十分钟就执行一次命令

 

  例如:

时间 含义
45 55 * * *  命令 每天22点45分执行命令
0 17 * * 1 命令 每周1的17点整执行命令
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的4点40分执行命令

 

posted @ 2022-01-06 13:46  御本美琴初号机  阅读(52)  评论(0)    收藏  举报