回答:
男バッシュ
echo [-neE] [arg ...]
Output the args, separated by spaces, followed by a newline.
The return status is 0 unless a write error occurs. If -n is
specified, the trailing newline is suppressed. If the -e option
is given, interpretation of the following backslash-escaped
characters is enabled.
[...]
Arithmetic Expansion
Arithmetic expansion allows the evaluation of an arithmetic expression
and the substitution of the result. The format for arithmetic expan‐
sion is:
$((expression))
[...]
Constants with a leading 0 are interpreted as octal numbers. A leading
0x or 0X denotes hexadecimal. Otherwise, numbers take the form
[base#]n, where the optional base is a decimal number between 2 and 64
representing the arithmetic base, and n is a number in that base. If
base# is omitted, then base 10 is used. When specifying n, the digits
greater than 9 are represented by the lowercase letters, the uppercase
letters, @, and _, in that order. If base is less than or equal to 36,
lowercase and uppercase letters may be used interchangeably to repre‐
sent numbers between 10 and 35.
man bash | wc
[GNU bash、バージョン3.2.57]のマニュアルページが4890行、37094ワード、329778文字であることを示します。この回答では、関連する7行、176ワード、1115文字のみを削除します。その答えはあなたの賛成に値すると思います。(このコメントのように
次のドキュメントから:https : //tiswww.case.edu/php/chet/bash/bashref.html#Shell-Arithmetic
先頭が0の定数は、8進数として解釈されます。先行する「0x」または「0X」は16進数を示します。それ以外の場合、数値は[base#] nの形式を取ります。オプションの基数は、算術基数を表す2〜64の10進数で、nはその基数の数です。base#を省略すると、base 10が使用されます。nを指定する場合、9より大きい数字は、小文字、大文字、「@」、「_」の順に表されます。baseが36以下の場合、10〜35の数字を表すために小文字と大文字を同じ意味で使用できます。
だから、echo $((16#FF))
出力255
とecho $((2#0110))
出力6
Iporの答えは優れていますが、非常にわずかに不完全です。bashのマニュアルページの引用部分は、構文は定数に対してのみ機能し、定数ではないことを示しています。これが実際にどのように機能するかを尋ねるべきです![base#]n
2#$1
拡張
展開は、コマンドラインが単語に分割された後に実行されます。実行される展開には、ブレース展開、チルダ展開、パラメータおよび変数展開、コマンド置換、算術展開、ワード分割、パス名展開の7種類があります。
拡張の順序は次のとおりです。チルダ展開、パラメーターおよび変数展開、算術展開、およびコマンド置換(左から右に行われます); 単語分割; およびパス名の展開。
基本的に、Bashは最初に変数置換を行っているため、$1
最初にその値で置換されます。その後、算術展開を行い、適切な定数のみを確認します。
$1
が入力であることを理解しています」と言っています。
$1
算術式が評価される前に整数定数を生成するためにパラメータが展開されることに注意してください。gnu.org/ software / bash / manual / bash.txt、セクション3.5を参照してください」