Bash
向使用者的輸入添加前導零,但正在使用 printf 進行轉換
我目前正在尋找以下程式碼的替代方案,它的工作方式不那麼“古怪”。
printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$vTICKET"); printf "$vTICKET\n";
如果我輸入
072
作為輸入,這就是我看到的Please enter the ticket number: 072 0058
我想知道是否有另一種方法可以讓我對輸入或
read
命令更加寬容?printf
在不實際測試字元串長度的情況下添加前導零似乎是一種很酷的方法。
輸入值的前導零導致 shell 將其解釋為八進制數。
10#
您可以使案例如強制十進制轉換$ printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$((10#$vTICKET))" ); printf "$vTICKET\n"; Please enter the ticket number: 072 0072
請注意,在 bash 中,您可以使用例如將 a 的結果
printf
直接分配給變數-v``printf -v vTICKET %04d "$((10#$vTICKET))"