dk
長さ文字列N
と数値がありますNDK
。
N
未満の場合は、NDK
名前が別の文字列の先頭に違いを追加したいと思いますSYMBOL
。
if (( n < ndk )); then
df=$(( ndk - n ))
fi
したがって、違いがdf
ある場合は、文字列の最初の2文字を文字列に2
追加したいと思います。SYMBOL
DK
symbol="!@#$%^&"
df=2
dk="FIRST"
結果の値dk
は
"FIRST!@"
df
文字列の先頭に文字を追加する方法はSYMBOL
?
答え1
df=3
dk=hello
symbol=123456
dk+=${symbol:0:df}
これにより、文字列$df
の最初の文字が$symbol
最後に追加されます$dk
。
$dk
上記のコードの最後の値はですhello123
。
この+=
演算子は、演算子の右側の値を演算子の左側の変数値の末尾に追加します。
${variable:offset:length}
の拡張は、bash
変数の(0から始まるインデックス)からlength
始まる長い部分文字列を返します。どちらも算術的文脈で評価されます。offset
variable
offset
length
答え2
必要なものがr
ライトパッドを使用する場合、$dk
文字の長さは次のとおりです。$ndk
$symbols
zsh
$ dk=FIRST ndk=7 symbol='!@#$%^&'
$ printf '%s\n' ${(pr[ndk][$symbol])dk}
FIRST!@
$ ndk=20
$ printf '%s\n' ${(pr[ndk][$symbol])dk}
FIRST!@#$%^&!@#$%^&!
r[length][string]
右のパディングを使用してください。パラメータ拡張フラグ。シンボルはp
解釈される方法を変更します。$symbol
それ以外の場合、p
パディング文字列はリテラルになります$symbol
。
$dk
長さが文字を超えると切り捨て$ndk
られます。
埋める幅~の$ndk
リストではなく長さ~の$ndk
数値つまり、各文字の表示幅を考慮してm
パラメータ拡張フラグを追加します。
複数の塗りつぶしバイト変える数値$dk
(またはにマルチバイト文字がある場合は影響します。)ロケールをに設定するオプションを無効にする$symbols
ことができます(フラグを使用しない)。multibyte
C
m
info zsh flags
詳細より。