Implementación de Shell de matriz y declarar uso

Implementación de la matriz de la matriz y declarar el uso
2009
Cómo hacer que la shell devuelva una variable de matriz

En términos generales, se debe usar la variable interna IFS,
pero la variable IFS predeterminada se debe restaurar inmediatamente después del procesamiento, de lo contrario, traerá muchos problemas impredecibles. . .
La siguiente es la introducción de man bash a IFS:
IFS El separador de campo interno que se usa para dividir palabras después de la expansión y para dividir líneas en palabras con el
comando de lectura incorporado. El valor predeterminado es `` ''.

示例 程序 1 、
export IFS = ";"
oración = "uno; dos; tres"
por palabra en $ oración; hacer
eco "$ palabra"
hecho

Programa de ejemplo 2,
IFS =.; Set- $ (echo 192.168.123.444); echo $ 4 $ 3 $ 2 $ 1 #Recuerde para restaurar IFS, o desarme IFS La
siguiente es la explicación de man bash de
set- : Si no sigue ningún argumento esta opción, entonces los parámetros posicionales no están
establecidos , de lo contrario, los parámetros posicionales se establecen en los argumentos, incluso si algunos de ellos comienzan con a-.

示例 程序 3 、
oración = "uno; dos; tres"
oración = $ {oración //; / $ '\ n'} # cambia el punto y coma al espacio en blanco
para la palabra en $ oración
do
echo "$ palabra"
hecho

Ejemplo de orden 4, igi
: ~ $ var = ( echo "a|b c")
igi: ~ $ echo $ {var [0]}
a | b
igi: ~ $ echo $ {var [1]}
c
igi: ~ $ IFS = '[|] '
igi: ~ $ var = ( echo "a|b c")
igi: ~ $ echo $ {var [0]}
a
igi: ~ $ echo $ {var [1]}
b
igi: ~ $ echo $ {var [2]}
c

$ var = ( echo a b c)
$ echo $ {abc [0]}
a
$ echo $ {abc [1]}
b

Programa de muestra 5.

! / usr / bin / env bash

IN = "[email protected]; [email protected]"
arr = $ (echo $ IN | tr ";" "\ n")
para x en $ arr
do
echo "> [$ x]"
hecho

Programa de ejemplo 6,
IN = "[email protected]; [email protected]"
OIFS = $ IFS
IFS = ';'
arr2 = $ IN
para x en $ arr2
do
echo "> [$ x]"
hecho
IFS = $ OIFS #Recuerda para restaurar la configuración de IFS. . .

示例 程序 7 、
IN = "[email protected]; [email protected]"
OIFS = $ IFS
IFS = ';'
arr2 = ($ IN)
para x en $ {arr2 [@]} #index "@" significa "expandir cada elemento de la matriz a una palabra separada"
do
echo "> [$ x]"
done
IFS = $ OIFS

示例 程序 8 、
IN = "[email protected];
conjunto de [email protected]" - "$ IN"
IFS = ";"; declare -a Array = ($ *)
echo "$ {Array [@]}"
echo "$ {Array [0]}"
echo "$ {Array [1]}"

Programa de ejemplo 9.
Utilice la función de división de awk para devolver una matriz:
awk 'BEGIN {split ("ab c", array, ""); for (i in array) {print array [i]}}'

Ejemplo de programa 10,
expansión de parámetros relacionada con bash:
longitud: $ {# p}; acceso al décimo quinto parámetro: $ {@: 15: 1} es un método para acceder directamente al parámetro 15; $ {x: 3: 5}
Subconjunto de la variable x chj @ linux-xzlr: trunk> AA = "a bc d ef"
chj @ linux-xzlr: trunk> BB = "d"
chj @ linux-xzlr: trunk> echo $ {AA %% $ BB *}
a bc
cjash @ linux-sdik: dl> AAA = abcdef
cjash @ linux-sdik: dl> echo $ {AAA: 2}
cdef
cjash @ linux-sdik: dl> echo $ {AAA-2}
abcdef
-bash- 3.00 $ echo $ {AAA: -2}
ef
-bash-3.00 $ echo $ {AAA :: 2}
ab
-bash-3.00 $
-bash-3.00 $ echo $ {AAA: -2} #: - 2 inválido, directo Ignorado ~
abcdef
-bash-3.00 $
cjash @ linux-sdik: ppp> AAA = abcabcabc
cjash @ linux-sdik: ppp> echo $ {AAA% $ {AAA: -2}}
abcabca
cjash @ linux-sdik: ppp> Para obtener
más contenido, visite:
http://blog.chinaunix.net/u1/47395/showart_1728391.html

Matriz de Shell y declarar uso
20121030

Descripción del uso El
comando declarar es un comando incorporado de bash. Se puede usar para declarar variables de shell y establecer los atributos de las variables (declarar variables y / o darles atributos). Este comando también se puede escribir como tipografía. Aunque la gente rara vez usa este comando, si conoce algo de su uso, encontrará este comando bastante útil.

Parámetros comunes
Formato:
formato de declaración: formato de tipografía:
formato de declaración -p
: tipografía -p
muestra los valores de todas las variables.

Formato: declare -p var
Formato: typeset -p var
Muestra el valor de la variable especificada var.

Formato: declarar var =
formato de valor : tipografía var =
formato de valor : var = valor
declarar variables y asignar valores.

Formato: declare -i var
Formato: typeset -i var
define la variable var como un entero. Después de eso, la expresión se puede evaluar directamente y el resultado solo puede ser un número entero. Si la evaluación falla o no es un número entero, se establece en 0.

Formato: declare -r var
formato: typeset -r var
formato: readonly
var declara la variable var como una variable de solo lectura. Las variables de solo lectura no pueden modificarse ni eliminarse.

Formato: declare -a var
Formato: typeset -a
var declara la variable var como una variable de matriz.
Pero esto no es necesario. Todas las variables pueden usarse como matrices sin definición explícita. De hecho, en cierto sentido, parece que todas las variables son matrices, y la asignación a variables sin subíndices es la misma que la asignación a "[0]".

Formato: declare -f
Formato: typeset -f
muestra todas las funciones personalizadas, incluidos el nombre y el cuerpo de la función.

Formato: declare -F
Formato: typeset -F
muestra todos los nombres de funciones personalizadas.

Formato: declare -f func
Formato: typeset -f func
Solo muestra la definición de función de la función especificada func.

Formato: declare -x var
formato: typeset -x var
formato: export var
Establezca la variable var como una variable de entorno para que pueda usarse en scripts y programas posteriores.

Formato: declare -x var = value
Formato: typeset -x var = value
Formato: export var = value
Establezca la variable var en la variable de entorno y asigne el valor como valor.


Ejemplo de uso El ejemplo uno declare es el comando incorporado
[root @ web ~] #type -a declare
declare es un shell incorporado
[root @ jfht ~] #type -a typeset
typeset es un shell incorporado

Ejemplo 2 Después de declarar -i, puede evaluar directamente la expresión
[root @ web ~] # x = 6/3 [root @ web ~]
#echo $ x
6/3
[root @ web ~] #declare -ix
[root @web ~] #echo $ x
6/3
[root @ web ~] # x = 6/3 [root @ web ~]
#echo $ x
2
Si la variable se declara como un entero, puede asignarle directamente la expresión, bash lo evaluará.

[root @ jfht ~] # x = error
[root @ jfht ~] #echo $ x
0
Si una variable se declara como un entero, cuando se le asigna una expresión cuyo resultado no es un entero, se convierte en 0.

[root @ jfht ~] # x = 3.14
-bash: 3.14: error de sintaxis: operador aritmético no válido (el token de error es ".14")
Si una variable se declara como un entero, también se le asigna un valor decimal (coma flotante) No bueno Porque bash no tiene soporte incorporado para números de punto flotante.

[root @ jfht ~] #declare + ix
El resultado de este comando es cancelar el atributo de tipo entero de la variable x.
[root @ jfht ~] # x = 6/3
[root @ jfht ~] #echo $ x
6/3
Debido a que la variable x no es una variable entera, la expresión no se evaluará automáticamente. Se pueden usar los siguientes dos métodos.
[root @ jfht ~] #x = $ [6/3]
[root @ jfht ~] #echo $ x
2
[root @ jfht ~] #x = $ ((6/3))
[root @ jfht ~] # echo $ x
2

示例 三 声明 只读 变量
[root @ jfht ~] #declare -rr
[root @ jfht ~] #echo $ r
[root @ jfht ~] # r = xxx
-bash: r: variable de solo lectura
[root @ jfht ~] # declare -rr = xxx
-bash: declare: r: readonly variable
[root @ jfht ~] #declare + rr
-bash: declare: r: readonly variable
[root @ jfht ~] #declare + rr
-bash: declare: r: variable de solo lectura
[root @ jfht ~] #
[root @ jfht ~] #unset r
-bash: unset: r: no se puede desarmar: variable readonly

Ejemplo 4 declarar variables de matriz (en realidad, cualquier variable se puede operar como una matriz)
[root @ jfht ~] #declare -a names
[root @ jfht ~] # names = Jack
[root @ jfht ~] #echo $ {names [0]}
Jack
[root @ jfht ~] #names [1] = Bone
[root @ jfht ~] #echo $ {names [1]}
Bone
[root @ jfht ~] #echo $ {names}
Jack
[root @ jfht ~] #echo $ {names [ ]}
Jack Bone
[root @ jfht ~] #echo $ {# names}
4 nombres de comillas
directamente, equivalentes a los nombres de
comillas [0] [root @ jfht ~] #echo $ {# names [
]}
2
[root @ jfht ~] #echo $ {names [@]}
Jack Bone
[root @ jfht ~] #echo $ {# names [@]}
2
[root @ jfht ~] #declare -p nombres
declaran -a nombres = '([0] = "Jack" [1] = "Hueso")'

示例 五 显示 函数 定义
[root @ jfht ~] #declare -F
declare -f add_jar
declare -f add_jar2
declare -f add_jar3
[root @ jfht ~] #declare -f
add_jar ()
{
[-e $ 1] && CLASSPATH = $ CLASSPATH: $ 1
}
add_jar2 ()
{
if [-e $ 1]; entonces
CLASSPATH = $ CLASSPATH: $ 1;
más
si [-e $ 2]; entonces
CLASSPATH = $ CLASSPATH: $ 2;
fi;
fi
}
add_jar3 ()
{
if [-e $ 1]; entonces
CLASSPATH = $ CLASSPATH: $ 1;
más
si [-e $ 2]; entonces
CLASSPATH = $ CLASSPATH: $ 2;
más
si [-e $ 3]; entonces
CLASSPATH = $ CLASSPATH: $ 3;
fi;
fi;
fi
}
[root @ jfht ~] #declare -f add_jar
add_jar ()
{
[-e $ 1] && CLASSPATH = $ CLASSPATH: $ 1
}
[root @ jfht ~] #declare -F add_jar
add_jar
[root @ jfht ~] #declare -F add_
[root @ jfht ~] #declare -F add_ *
[root @ jfht ~] #declare -F 'add_ *'
[root @ jfht ~] #

Supongo que te gusta

Origin www.cnblogs.com/chanix/p/12737864.html
Recomendado
Clasificación