[英]BASH : formatting string in printf
我正在执行的脚本:
#!/bin/bash
...
function myprint() {
cp=$1
targetpermission=$2
t1="RESOURCE"
t2="Current Permission"
t3="New Permission"
printf "%s : %s ===> %s\n",$t1,$t2,$t3
}
myprint
预期产量:
RESOURCE : Current Permission ===> New Permission
我得到的输出:
[abhyas_app01@localhost safeshell]$ ./test1.sh
Permission,New : Permission ===>
,RESOURCE,Current[abhyas_app01@localhost safeshell]$
到底是怎么回事? 如何获得预期的输出?
PS- echo
不是一种选择,因为最终我将使用%-Ns
来证明字符串的%-Ns
,其中N是根据端子宽度计算的。
在shell中, printf
是命令,命令参数用空格而不是逗号分隔。
采用:
printf "%s : %s ===> %s\n" "$t1" "$t2" "$t3"
同样,双引号也是必需的。 否则,“ Current Permission
和“ New Permission
参数将被拆分,并且您将从单个printf
命令获得两行输出。
我注意到您的函数(至少)有两个参数,但是您没有显示函数中正在打印或以其他方式使用的参数。 您可能需要重新查看逻辑部分。
根据您当前的逻辑:
t1="RESOURCE"
t2="Current Permission"
t3="New Permission"
printf "%s : %s ===> %s\n",$t1,$t2,$t3
你真的传递给printf
:
printf "%s : %s ===> %s\n,RESOURCE,Current" "Permission,New" "Permission"
注意“格式字符串”参数如何包括所有的$t1
和部分$t2
。 您只为这三种%s
格式提供了两个参数,因此第三个保留为空。 输出为:
Permission,New : Permission ===>
,RESOURCE,Current
在第一行的末尾有一个空格,在第二个“行”的末尾没有换行符(因此您的提示会在Current
之后立即显示)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.