.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
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章