[英]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.