KornShell Printf-填充字符串

C. *_*oss 3 unix string shell scripting ksh

我正在尝试编写一个使用printf将字符串填充到特定宽度的KornShell(ksh)函数。

例子:

呼叫

padSpaces Hello 10
Run Code Online (Sandbox Code Playgroud)

输出量

'Hello     '
Run Code Online (Sandbox Code Playgroud)

我目前有:

padSpaces(){
        WIDTH=$2
        FORMAT="%-${WIDTH}.${WIDTH}s"
        printf $FORMAT $1
}
Run Code Online (Sandbox Code Playgroud)

编辑:这似乎是在工作本身,但是当我在脚本中分配它时,它似乎失去了除了第一个空格以外的所有内容。

TEXT=`padSpaces "TEST" 10`
TEXT="${TEXT}A"
echo ${TEXT}
Run Code Online (Sandbox Code Playgroud)

输出:

TEST A
Run Code Online (Sandbox Code Playgroud)

我也欢迎不使用printf的建议。我真正想了解的是一种从ksh制作固定宽度文件的方法。

Pau*_*ce. 5

您的功能对我来说很好。您的分配不适用于等号周围的空格。它应该是:

SOME_STRING=$(padSpaces TEST 10)
Run Code Online (Sandbox Code Playgroud)

我也自由地更换了反引号。

您没有显示如何使用变量或如何获得显示的输出。但是,您的问题可能是您需要引用变量。这是一个示范:

$ SOME_STRING=$(padSpaces TEST 10)
$ sq=\'
$ echo $sq$SOME_STRING$sq
'TEST '
$ echo "$sq$SOME_STRING$sq"
'TEST      '
Run Code Online (Sandbox Code Playgroud)