Printf
為尾隨空格設置 printf 動態格式
有什麼標準方法可以使 printf 的“%-6s”格式動態化?
function justify { echo "$(printf '%-6s' $1)" }
我嘗試將變數插入格式,但出現錯誤處理格式錯誤。
$(printf '%-${2}s' ${1})
不完全確定通過將命令替換傳遞給的意圖是什麼
echo
,但這應該可以解決問題:justify() { printf "%-${2}s\n" "$1" }
如果您
$1
為了傳遞多個參數而沒有引用,請考慮"$@"
改用。關於您現有的嘗試,有幾點需要注意:
- 變數不在單引號中展開,請使用雙引號。
- 無需使用命令替換,直接呼叫命令即可。
- (可選)避免
function
,這是非 POSIX。
Shell 變數不在單引號內展開;the
$
被視為文字美元符號。您應該使用雙引號來${2}
擴展為 shell 變數:printf "%-${2}s" ${1}
您的問題並不完全清楚,因為使用命令替換將輸出
printf '%-6s' $1
作為輸入參數傳遞以echo
刪除命令列印的任何空格字元printf
。在我看來,你的函式最好寫成:justify() { printf "%-${2}s" $1 }