我正在嘗試編寫一個KornShell(ksh)函數,它使用printf將字符串填充到特定寬度。KornShell Printf - 填充字符串
例子:
呼叫
padSpaces Hello 10
輸出
'Hello '
我目前有:
padSpaces(){
WIDTH=$2
FORMAT="%-${WIDTH}.${WIDTH}s"
printf $FORMAT $1
}
編輯:這似乎在工作,本身,但是當我在腳本中指定它時,它似乎失去了第一個空間。
TEXT=`padSpaces "TEST" 10`
TEXT="${TEXT}A"
echo ${TEXT}
輸出:
TEST A
我也開不使用printf的建議。我真正想要的是通過ksh製作固定寬度文件的方法。
@Dennis - +1,你能說出爲什麼空間被吃掉了嗎? – 2009-11-15 01:10:40
當'ksh'進行字段分割(又名'bash'中的單詞分割)時,$ IFS中的字符序列在未加引號時被視爲一個分隔符。試試這個:'string == $'a b \ t \ tc \ n \ nd'; echo $ string; echo「$ string」'。第一個'echo'會給你「a b c d」,第二個將有a,b和c展開,並且在下面兩行。 '$ IFS'的默認值是'$'\ t \ n''。 – 2009-11-15 03:43:28
在我以前的評論中,在字符串賦值中a和b之間應該有四個空格。在這種情況下,在他們的StackOverflow! – 2009-11-15 03:45:14