我現在想從一個SQL命令responde提取值Shell腳本和SQL結果
服用點是這樣的:
psql db -c "SELECT COUNT(test) FROM tbTest;"
結果是:
count
------
33176
(1 row)
我想提取33176的價值......有沒有簡單的方法來做到這一點?
我現在想從一個SQL命令responde提取值Shell腳本和SQL結果
服用點是這樣的:
psql db -c "SELECT COUNT(test) FROM tbTest;"
結果是:
count
------
33176
(1 row)
我想提取33176的價值......有沒有簡單的方法來做到這一點?
如果它總是在格式返回(預期結果第3行),您可以使用此:
psql db -c "SELECT COUNT(test) FROM tbTest;" | tail -n 2 | head -n 1
的解釋:
tail -n 2
將得到最後2行,然後通過head -n 1
處理,即獲得前1行。
編輯:實際上,這不起作用,對不起。但波紋管工作。
如果結果爲總是4行,並且在不調用該創建過程的任何其他命令:
(read; read; read count; read) < <(psql db -c "SELECT COUNT(test) FROM tbTest;")
echo "$count"
這也工作:
結束編輯
psql db -c "SELECT COUNT(test) FROM tbTest;" | (read; read; read count; read; echo "$count")
警告:count
變量將不可用於括號外因爲管道(|
)啓動了一個新過程。所以這不起作用:
psql db -c "SELECT COUNT(test) FROM tbTest;" | (read; read; read count; read)
echo "$count"
編輯:
如果你想在一個變盤點,您可以:
count=$(psql db -c "SELECT COUNT(test) FROM tbTest;" | (read; read; read count_tmp; read; echo "$count_tmp"))
如果你能接受啓動一個進程,但不兩個(頭和尾),你可以:
psql db -c "SELECT COUNT(test) FROM tbTest;" | sed -n -e '3p'
這總是假設輸出的psql將4行,你需要第三個。
爲什麼使用不需要的東西?只需使用一些psql
選項...
> psql -At -c "SELECT COUNT(test) FROM tbTest;" db
115899
簡化爲:psql db -Atc'SELECT count(test)FROM tbtest' –
+1。如果你想選擇多個列,這是特別有用的,因爲它刪除了空格。 – ojrac
通過封閉在反引號完整的shell命令,可以檢索其結果到一個shell變量:
#/bin/sh
THECOUNT=`psql -A -t -c 'SELECT COUNT(*) FROM tbTest;' db`
echo "the count = $THECOUNT"
外觀極好答案:d – Killercode
AH提供了更優雅的方案。 –