.bashrc 文件 函数形式缩写参数

工作中有很多经常使用到的命令,扩展开就是一大串。用函数式缩写的形式可以完成快速开发(偷懒)。

注意要source .bashrc

#hive search  注意 有参数时候必须有路径!
hs(){
  # ${!#} 获取最后一个参数
  output="$*"
  # 去除最后一个参数
  nfdown=`echo $output | awk '{for(i=1;i<=NF-1;i++) printf $i" "}'`
  HIVE_HOME="/hdfs/hivename/"
  # !#为第0个参数时替换为空
  hdfs dfs ${nfdown:--ls} $HIVE_HOME/${!#/$0/}
}

 部分使用方法提出来,作为笔记。

 

awk 中 print 默认有换行

NF FS 、OFS、RS 、ORS
${nfdown:--ls}当nfdown变量为空时,用-ls替代  
${!#} 获取最后一个参数 $# 获取参数个数  ${$#} 获取最后一个参数失败(不能在花括号内使用美元符,必须将美元符换成感叹号)
${!#/$0/} 当最后一个参数为第零个参数时,使用空字符串取代 ${str/str1/str2} 将str中str1字符串取代为str2
   
   

优化后(不能使用hdfs的find功能):

# 基于hdfs dfs 查询hive仓库
# hive search
hs(){
  HIVE_HOME="/warehouse/tablespace/managed/hive"
  # 最后一个参数 存在 - 时判断未输入路径 否则进入下边判断
  if [[ ${!#} == "-"* ]];then
    hdfs dfs ${@:--ls} $HIVE_HOME
  else
    nfdown=`echo $* | awk '{for(i=1;i<=NF-1;i++) printf $i" "}'`
    # !#为第0个参数时替换为空
    hdfs dfs ${nfdown:--ls} $HIVE_HOME/${!#/$0/}
  fi
}

 

你可能感兴趣的:(shell,shell,bash)