「10#N」の意味

「10#N」の意味

ジミーが書いた:

この場合、一時ディレクトリを使用することもできます。

for file in [[:digit:]]*.png; do
    echo mv $file tmp/$(printf %04d $((10#${file%.png}+1))).png
done

重要なのは、bashがこれをjustと10#N解釈するように強制することです。それ以外の場合、先行ゼロは8進数を表します。000NN

10#N算術拡張の一部ですか、それとも別のものですか?

これは Bash マニュアルまたは POSIX 仕様に記載されていますか?見つかりません。

答え1

10#Nまたはその進数の数字として解釈される一般的な形式[base#]nです。2 <= base <= 64n

マニュアルbash、部分シェル算術これが言及されました。

bashこの機能はPOSIXでは指定されておらず、2から36のベースを持つデリバティブでのみ使用できます。kshzsh

答え2

算術評価セクションでバッシュマニュアル

0で始まる定数は8進数として解釈されます。前に0xまたは0Xがある場合は、16進数を表します。それ以外の場合、数値は [base#]n 形式を取ります。ここで、baseは算術の下を表す2〜64の10進数で、nはその下の数字です。 base#を省略すると、base 10が使用されます。 9より大きい数字は、小文字、大文字、@、_の順に表示されます。下数が 36 以下の場合は、小文字と大文字を入れ替えて使用して、10 ~ 35 の数字を表すことができます。

答え3

もちろんman bash内部にありますARITHMETIC EVALUATION

LESS=+/'\[base#\]n,' man bash

それ以外の場合、数値は [base#]n 形式を取ります。ここで、オプションの下は算術の下を表す2〜64の10進数で、nはその下の数字です。

関連情報