Bash-script til konvertering af binært til decimaltal: Sådan fungerer `echo $((2#$1))`

Hvordan fungerer følgende bash-script, der viser et decimaltal ud fra et binært tal: `echo $((2#$1))`?

Bash-scriptet `echo $((2#$1))` konverterer et binært tal til et decimaltal ved at bruge Bash's aritmetiske udtrykssyntaks, hvor `2#` angiver base 2.

Hvordan fungerer følgende bash-script, der viser et decimaltal ud fra et binært tal: `echo $((2#$1))`?

Bash-scriptet `echo $((2#$1))` konverterer et binært tal til et decimaltal. Her er en trinvis forklaring på, hvordan det fungerer:

  • Parameter: $1 repræsenterer det første argument, der gives til scriptet. Dette argument forventes at være et binært tal (en streng af 0'er og 1'er).
  • Base: 2# angiver, at tallet, der følger, er i base 2 (binært). Dette er en del af Bash's aritmetiske udtrykssyntaks.
  • Aritmetisk udtryk: $((...)) bruges til at evaluere aritmetiske udtryk i Bash. Inden for disse parenteser kan man udføre forskellige matematiske operationer.
  • Konvertering: Når $1 er et binært tal, og det placeres efter 2# inden for $((...)), konverterer Bash det binære tal til et decimaltal.
  • Output: echo bruges til at udskrive det resulterende decimaltal til terminalen.

Eksempel:

./script.sh 1010

Her er 1010 det binære tal, der gives som argument. Scriptet vil udføre følgende:

  1. Erstatte $1 med 1010.
  2. Evaluere udtrykket $((2#1010)), hvilket konverterer det binære tal 1010 til det decimale tal 10.
  3. Udskrive 10 til terminalen.

Således vil outputtet være:

10