我正在尝试编写一个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