shell常用命令大全[bigdata版]

toc

循环

遍历数组

NUM=10
for i in $(seq 1 $NUM)
do
    echo "$i"
done

遍历文件中的所有行

while read line
do
    echo $line
done < ./file.txt

if

增强双括号

双括号的特殊用法

  1. (()) 增强括号的用法: 符合c语言的算术比较
    常用于算术运算比较. 双括号中的变量可以不使用$符号前缀, 只要括号中的表达式符合C语言运算规则, 支持多个表达式用逗号分开.
    比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in seq 0 4或者for i in {0..4}.
    再如可以直接使用if ((i<5)),使,if[i -lt 5 ].
  2. [[]] 增强方括号用法: 符合c语言的字符串比较
    常用于字符串的比较. 主要用于条件测试, 双括号中的表达式可以使用&&, ||, <, >等C语言语法.
    比如可以直接使用if [[ a != 1 &&a != 2 ]], 如果不适用双括号, 则为if [ a -ne 1] && [a != 2 ]或者if [ ane1aa != 2 ].

日期

每月的最后一天

dayno=`date -d "1 month" +%Y%m01`
lastday_month=`date -d "1 day ago ${dayno}" +%Y%m%d`

往前推一个小时

 dayno=`date -d "1 hour ago" +%Y%m%d`

crontab定时调度

crontab -l # 查看当前定时任务

crontab -e # 编辑定时任务

hadoop

检查文件

hadoop fs -test -e: 如果路径存在则$?值为0

flag=0
times=0
while [ ${flag} -eq 0 ]
do
  hadoop fs -test -e hdfs://ip:port/warehouse/database_name/database_name.db/table_name/dayno=${YYYYMMDD}/hour=${v_dayhour_hh}/*
  if [ $? -eq 0 ];then
  flag=1
  else
    if [ ${times} -eq 30 ];then
      echo "tidb数据同步异常 或同步超过1小时"
      exit 1
    fi
    let times++
    sleep 120s
  fi
done

hadoop fs -test 命令手册

-test -[defsz] <path> :
  Answer various questions about <path>, with result via exit status.
    -d  return 0 if <path> is a directory.
    -e  return 0 if <path> exists.
    -f  return 0 if <path> is a file.
    -s  return 0 if file <path> is greater than zero bytes in size.
    -z  return 0 if file <path> is zero bytes in size, else return 1.
原文地址:https://www.cnblogs.com/bitbitbyte/p/13548685.html