GNU/Linux >> Znalost Linux >  >> Linux

Použít $[ Expr ] místo $(( Expr ))?

V odstavci vysvětlujícím aritmetické rozšíření Bashova uživatelská příručka odhaluje 2 různé způsoby vyhodnocení výrazu, první používá $(( EXPRESSION )) a druhý používá $[ EXPRESSION ] . Tyto dva způsoby se zdají být velmi podobné, protože jediný rozdíl, který jsem našel, je:

$[ EXPRESSION ] vypočítá pouze výsledek EXPRESSION a neprovede žádné testy:

Přesto mě to zaujalo, protože stejný dokument doporučuje použít $[ EXPRESSION ] spíše než $(( EXPRESSION )) .

Kdykoli je to možné, měli by se uživatelé Bash snažit použít syntaxi s hranatými závorkami:

Proč byste to chtěli, když se dělá méně testů?

Přijatá odpověď:

Duplikační otázka (s odpovědí)

https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expression

Manuálová stránka pro bash v3.2.48 říká:

[…] Formát pro aritmetické rozšíření je:

 $((expression)) 

Starý formát $[expression] je zastaralý a bude odstraněn v nadcházejících verzích bash.

Takže $[…] je stará syntaxe, která by se již neměla používat

Kromě této odpovědi:

http://manual.cream.org/index.cgi/bash.1#27

Informace týkající se verzí bash:

Zde je několik informací o manuálových stránkách bash (je těžké najít informace o tom, na jakou verzi se každá z nich odkazuje):

Odkaz OP:

http://www.tldp.org/guides.html Průvodce Bash pro začátečníky
verze:1.11
autor:Machtelt Garrels,
poslední aktualizace:prosinec 2008

sth (74,6 000 opakování) s citací bash v3.2.48

z https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expression)

Poznámka:Více informací o [] vs (()) zde:http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00033.html

našel jsem odkaz:

http://www.gnu.org/software/bash/manual/ poslední aktualizace 22. srpna 2012

http://www.gnu.org/software/bash/manual/bash.html#Arithmetic-Expansion


Linux
  1. jak použít kill SIGUSR2 v bash?

  2. Jak analyzovat hlavičky HTTP pomocí Bash?

  3. Jaké je použití $# v Bash

  1. Použijte systemd časovače místo cronjobů

  2. Jak používat příkazy historie Bash

  3. Použít rozšíření .sh nebo .bash pro skripty Bash?

  1. Proč nemohu použít CD ve skriptu Bash?

  2. Závorka v aritmetice výrazu:3 * (2 + 1)?

  3. Který Shell bych měl použít – Tcsh vs Bash?