2016-07-23 61 views
2

是否有一個在Bash中縮進字符串(用於輸出)的示例? 我發現使用printf的例子,但他們似乎沒有按預期工作。 我想簡單地用給定數量的空格縮進給定的字符串。如何使用printf在Bash中縮進字符串?

echo "Header" 
indent "Item 1" 2 
indent "Sub Item 1a" 4 
indent "Sub Item 1b" 4 

會產生輸出

Header 
    Item 1 
    Sub Item 1a 
    Sub Item 1b 

回答

5

printf,像%3s的意思是「一個字符串,而是儘可能多的初始空間爲有需要確保該字符串是至少3列寬」。

即使字符串是空字符串'',這種情況下也可以工作,在這種情況下,%3s實質上意味着「三個空格」。

因此,例如,indent "Sub Item 1a" 4可以表示爲printf '%4s%s\n' '' "Sub Item 1a",它打印四個空格後跟隨"Sub Item 1a"和一個換行符。

如果你願意,你可以實現indent作爲一個功能:

function indent() { 
    local string="$1" 
    local num_spaces="$2" 

    printf "%${num_spaces}s%s\n" '' "$string" 
} 
+0

必須添加換行符在那裏'printf的 「%$ {} num_spaces s%S \ n」' – IntrovertedRoot

相關問題