shell常用命令大全[bigdata版]

本文深入探讨了Shell脚本中的循环、数组遍历、条件判断及日期操作等高级技巧,并详解了Hadoop文件系统测试命令的使用方法,帮助读者掌握高效的数据处理流程。

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 ) ) , 如 果 不 使 用 双 括 号 , 则 为 i f [ i -lt 5 ].
  2. [[]] 增强方括号用法: 符合c语言的字符串比较
    常用于字符串的比较. 主要用于条件测试, 双括号中的表达式可以使用&&, ||, <, >等C语言语法.
    比如可以直接使用if [[ a != 1 && a != 1 && a != 2 ]], 如果不适用双括号, 则为if [ a -ne 1] && [ a -ne 1] && [ a != 2 ]或者if [ a − n e 1 − a a != 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.
xargs命令是一个常用的shell命令,它可以从标准输入中读取字符串,并根据指定的分隔符将字符串分割成多个参数,然后将这些参数传递给后面的命令作为命令行参数。与管道不同的是,xargs不仅可以处理标准输入的内容,还可以处理命令行参数。通过使用xargs命令,我们可以更灵活地处理命令行参数和标准输入的内容。 在shell脚本中,xargs命令经常被用来处理需要使用管道传递的命令。例如,通过将grep命令的输出作为xargs的输入,我们可以将匹配的字符串作为参数传递给其他命令进行进一步处理。这在处理大量文件或数据时特别有用。 举个例子,假设我们有一个包含文件名的列表文件,我们可以使用xargs命令将这些文件名传递给其他命令进行操作。比如,我们可以使用xargs命令删除这些文件:xargs rm < 文件列表.txt。这样,xargs将会将文件列表中的每个文件名作为参数传递给rm命令,进而删除这些文件。 总结来说,xargs命令是一个非常实用的工具,它可以帮助我们更好地处理命令行参数和标准输入的内容。通过使用xargs命令,我们可以更方便地传递参数,并且可以与其他命令结合使用,提高脚本的灵活性和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux shell xargs命令详解,xargs与管道的区别](https://blog.youkuaiyun.com/helloxiaozhe/article/details/105156925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值