Bash

Bash 腳本:在同一行中列印列數據

  • March 26, 2014

我編寫了一個 bash 腳本來計算PostgreSQL數據庫的大小並列印輸出以及腳本在文本文件中執行的日期。腳本程式碼如下:

#!/bin/bash
date +"%d:%m" >> dbdata.growth
psql -h 192.168.2.173 -U postgres -c "select pg_database_size('ddb'); "  | sed -n    
'3,3p' | numfmt --to=iec >>dbdata.growth
psql -h 192.168.2.173 -U postgres -c "select pg_database_size('dpkidb'); "  | sed  
-n '3,3p' | numfmt --to=iec >>dbdata.growth

該腳本以如下所示的格式生成以下輸出

26:03
        134G
        4.4M
26:03
        134G
        4.4M

對我來說,問題是我希望所有三列都在同一行中。我怎樣才能做到這一點?

替換所有輸出行,例如:

date +"%d:%m" >> dbdata.growth

使用以下行:

date +"%d:%m" | tr -d $'\n' >> dbdata.growth

這用於tr在將換行符放入輸出文件之前刪除它們。

tr是一個翻譯或刪除實用程序。在這種情況下,使用該-d選項會告訴它刪除。我們要求它刪除的字元是換行符,表示為$'\n'

解決方案是使用子shell:

#!/bin/bash
var1=$(date +"%d:%m")
var2=$(psql -h 192.168.2.173 -U postgres -c "select pg_database_size('ddb'); "  | sed -n '3,3p' | numfmt --to=iec)
var3=$(psql -h 192.168.2.173 -U postgres -c "select pg_database_size('dpkidb'); "  | sed  -n '3,3p' | numfmt --to=iec )
echo $var1 $var2 $var3 >>dbdata.growth

引用自:https://unix.stackexchange.com/questions/121510