C'è qualche differenza tra l'uso di un set in ksh e la semplice impostazione di una variabile?
Domanda
Le seguenti 2 righe sono completamente equivalenti? Altrimenti qual è la differenza? Ho visto molti script di shell utilizzare il numero 1 e mi chiedevo solo cosa ti offre rispetto al numero 2.
-
set TARGET = " $ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}. $ {ENV} .properties "
-
TARGET = " $ {} XMS_HOME / common / JXB / config / $ {} RUNGROUP $ {} ENV .properties ".
Soluzione
typeset
creerà una variabile locale (una che non "perde"). Questo è utile nelle funzioni ma ho anche visto che viene utilizzato al livello più alto di uno script di shell.
a=0
function x {
typeset a=1
}
x
echo $a
function y {
a=2
}
y
echo $a
stamperà
0
2
Puoi anche usare typeset
per creare matrici e numeri interi.
[EDIT] aggiunta della parola chiave function
perché alcune shell lo richiedono. Rimuovilo se offende la tua shell ma dovrebbe funzionare con la maggior parte delle versioni.
Altri suggerimenti
poiché lo scripting della shell è un linguaggio tipicamente diffuso (in cui le variabili non hanno un tipo di dati) possiamo usare il set di caratteri per impostare una particolare variabile per prendere solo un tipo di dati simile di valori.