1. Escriba el guión, los requisitos son los siguientes:
Al escribir un script, intente poner la definición de la función al principio del script y no puede poner la definición de la función al final del script, de lo contrario, la función no se leerá;
2. Para declaración:
结构:
for 定义变量
do 使用变量,执行动作
done 结束标志
格式1:
#!/bin/bash
for WESTOS in `seq 2 2 10` #开始为2,结束为10(包含10),部长是2;即10以内的偶数
do
echo $WESTOS
done
格式2:
for WESTOS in 1 2 3(westos linux lin)
do
echo $WESTOS
done
格式3:
for WESTOS in {
10..1} (从10到1)
do
echo $WESTOS
done
格式4:
for ((WESTOS=0;WESTOS<10;WESTOS++))
do
echo $WESTOS
done
Suplemento: comando seq: se usa para generar todos los enteros de un número determinado a otro
Sintaxis:
seq [opciones] ... mantisa
seq [opciones] ... primer número y mantisa
seq [opciones] ... primer número incremento mantisa
Parámetros:
-f, --format = formato utiliza el formato de punto flotante de estilo printf
-s, --separator = string usa la cadena especificada para separar números (uso predeterminado: \ n)
-w, --equal-width delante de la columna Agregue 0 para que el ancho sea el mismo
Escritura de secuencia de comandos:
check_host.sh
Utilice esta secuencia de comandos para detectar si 10 hosts conectados directamente a su host actual tienen una red normal.
Si la red es normal, muestre la lista de IP del host
Escritura de script:
create_user_file.sh agregar archivo usernamefile agregar archivo userpasswd
y preguntar si el usuario existe, crear si no;
3. Declaración while y declaración until:
while :
while ture #条件为真
do #条件成立所作循环动作
done
until :
until false ##条件为假
do
#条件不成立所作循环动作
done
En el bloque de ejecución (do) de la instrucción while y la instrucción hasta, debe haber una condición para controlar la variable; de lo contrario, se repetirá indefinidamente: la
instrucción while genera una tabla de multiplicar del 99:
La sentencia hasta genera la tabla de multiplicar del 99:
4. Si declaración:
if
then
elif
then
...
else
fi
Ejercicio de script:
check_file.sh
por favor ingrese el nombre del archivo: el archivo del
archivo no existe el
archivo es el
archivo es directorio
Este script seguirá preguntando hasta que el usuario ingrese a exit
La declaración if ejecutará el juicio varias veces de arriba a abajo, hasta que se juzgue la declaración que cumple con las condiciones (mecanismo de juicio, sí y no). La
declaración del caso se juzga solo una vez (mecanismo de llamada)
Declaración 5.case:
case $1 in
word1|WORD1)
action1
;;
word2|WORD2)
action2
;;
*)
action3
esac
Ejercicio de guión:
system_watch.sh carga de memoria de disco (se muestra cada segundo)
monitor de disco uso de disco
monitor de memoria uso de memoria
carga de monitor carga de inicio
Declaración 6.expect:
问题脚本
#!/bin/bash
read -p "what's your name:" NAME
read -p "How old are you: " AGE
read -p "Which objective: " OBJ
read -p "Are you ok? " OK
echo $NAME is $AGE\'s old study $OBJ feel $OK
应答脚本
#!/usr/bin/expect
set timeout 1 ##脚本问答等待时间
set NAME [ lindex $argv 0 ] ##第一个字符
set AGE [ lindex $argv 1 ]
set OBJ [ lindex $argv 2 ]
set FEEL [ lindex $argv 3 ]
spawn /mnt/ask.sh
expect {
"name" {
send "$NAME\r";exp_continue }
"old" {
send "$AGE\r";exp_continue }
"objective" {
send "$OBJ\r";exp_continue }
"ok" {
send "$FEEL\r" }
}
expect eof
将应答脚本写入shell:
#!/bin/bash
echo hello westos
/usr/bin/expect <<EOF
spawn /mnt/ask.sh
expect {
"name" {
send "$1\r";exp_continue }
"old" {
send "$2\r";exp_continue }
"objective" {
send "$3\r";exp_continue }
"ok" {
send "$4\r" }
}
expext eof
Ejercicio de script:
host_list.sh
detecta si la red 172.25.254.1-172.25.254.10 está abierta.
Si está abierta, la lista de resolución generada es la siguiente:
nombre de host ip
tal como: 172.25.254.1 westos_Student1.westos.org 7.break
, continue, exit controller:
"$? "Indica el valor de salida, la salida del resultado correcto o el valor de salida después de la salida es 0;
continue ##终止当此次前循环提前进入下个循环
break ##终止当前所在语句所有动作进行语句外的其他动作
exit ##脚本退出