我正在嘗試遍歷表名并將表模式匯出為 .csv 檔案。這是我的shell腳本:
#!/bin/bash
## declare an array variable
declare -a array=("table1"
"table2")
# get length of an array
arraylength=${#array[@]}
# use for loop to read all values and indexes
for (( i=0; i<${arraylength}; i ));
do
echo "index: $i, value: ${array[$i]}"
hive -e $('DESCRIBE FORMATTED ${array[$i]') | sed 's/[\t]/,/g' > /tmp/${array[$i]}.csv
done
但我得到了這個錯誤:
test.sh: line 14: DESCRIBE FORMATTED ${array[$i]: command not found
Missing argument for option: e
有什么建議?
uj5u.com熱心網友回復:
問題在這里:
hive -e $('DESCRIBE FORMATTED ${array[$i]') | sed 's/[\t]/,/g' > /tmp/${array[$i]}.csv
命令替換$()執行 shell 命令,但 DESCRIBE 不是 shell 命令。}也缺少花括號
固定的:
hive -e "DESCRIBE FORMATTED ${array[$i]};" | sed 's/[\t]/,/g' > /tmp/${array[$i]}.csv
查看類似命令的示例:https ://stackoverflow.com/a/52541046/2700344
如果要將命令結果轉換為變數,則可能需要使用 $(command) ,例如:
count=$(hive -e "select count(*) from mytable")
在您的情況下,您不需要 $() 命令替換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432231.html
