Si tratta dell'utilità Unix "test", invocata anche come "[", o la sua variante di sintassi della shell [[…]]. Per domande sul test di software e configurazioni, utilizzare il tag "testing".
Diciamo che abbiamo 2 numeri interi in uno script bash: value1=5 value2=3 Allora perché dobbiamo usare le virgolette doppie in caso di test? Per esempio: if [[ "$value1" -eq "$value2" ]] Perché non usare solo quanto segue? if [[ $value1 -eq $value2 ]] Per me, le doppie virgolette non hanno …
Quando scrivo, di solito scrivo i miei if con la seguente sintassi in quanto è più facile per me capire che ciò che verrà dopo non è vero. if [ ! "$1" = "$2" ]; then Altri dicono che la strada qui sotto è migliore if [ "$1" != "$2" …
Ho il seguente ifblocco nel mio script bash: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi L'esecuzione dello script non sta entrando nel mio ifblocco anche se $PACKAGENAMEè uguale a kakadu-v6_4-00902C. Che cosa sto facendo di sbagliato?
Per curiosità, quando si esegue un confronto di variabili bash (il cui valore è un integer) è possibile testarlo con un valore predefinito dichiarato come into come string. Script di esempio : #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { …
Quando dovrei usare -eqvs =vs== per esempio [[ $num -eq 0 ]] [[ $num = 'zzz' ]] Ho osservato un modello di utilizzo -eq(e -ne, ecc.) Per i numeri e =per le stringhe. C'è una ragione per questo e quando dovrei usare==
Sto usando bash su Linux. Sto ottenendo un successo dalla seguente dichiarazione if, ma questo non dovrebbe restituire un codice di errore? if [[ ■ = [⅕⅖⅗] ]] ; then echo yes ; fi Il quadrato NON eguaglia nessuno dei caratteri, quindi non vedo perché ottengo un codice di successo. …
In Bash, due numeri interi possono essere confrontati usando l'espressione condizionale arg1 OP arg2 OP è uno -eq, -ne, -lt, -le, -gt, o -ge. Questi operatori binari aritmetici restituiscono vero se arg1 è uguale, non uguale a, minore di, minore o uguale a, maggiore di, o maggiore di o uguale …
Sto usando lo script di seguito per tornare indietro di due giorni quando lo script viene eseguito all'inizio di due giorni dell'anno e controllare anche il primo e il secondo giorno di ogni mese e tornare indietro di due giorni. if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] …
Per le versioni di Bash precedenti a "GNU bash, Versione 4.2" ci sono alternative equivalenti per l' -vopzione del testcomando? Per esempio: shopt -os nounset test -v foobar && echo foo || echo bar # Output: bar foobar= test -v foobar && echo foo || echo bar # Output: foo
Supponiamo che io voglia confrontare la gccversione per vedere se il sistema ha la versione minima installata o meno. Per verificare la gccversione, ho eseguito quanto segue gcc --version | head -n1 | cut -d" " -f4 L'output è stato 4.8.5 Quindi, ho scritto una semplice ifdichiarazione per verificare questa …
Ho notato mentre rispondevo a un'altra domanda teste [sono binari diversi, ma la [manpage si alza test. Oltre al requisito per un finale ], c'è qualche differenza? In caso contrario, perché sono binari separati invece di essere collegati simbolicamente? (Sono anche bashincorporati e bashnon mostrano alcuna differenza.)
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.