Bash
Bash 腳本:在同一行中列印列數據
我編寫了一個 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