Introdução ao Shell Script
conceito
O script de shell é um arquivo de texto contendo uma série de comandos que o
Shell lê este arquivo e executa os comandos
Cenários de aplicação
- Operação repetitiva
- Processamento de transações em massa
- Operação e manutenção automatizadas
- Execução de tarefa agendada
O primeiro shell script
Escreva o primeiro script Shell helloword.sh
#!/bin/bash
echo “Hello World”
#! é uma marca acordada, que informa ao sistema qual interpretador o script precisa executar
Métodos comuns de execução de scripts
O primeiro: use o caminho relativo ou caminho absoluto de bash ou sh + script (não dê permissão script + x)
sh helloworld.sh
bash helloworld.sh
O segundo tipo: use o caminho absoluto ou caminho relativo do script de entrada para executar o script (deve ter permissão executável + x) "
- Primeiro, dê a permissão + x ao script helloworld.sh
chmod 777 helloworld.sh
- Executar script
./helloworld.sh
Variáveis em Shell
Variável de sistema
Variáveis de sistema comuns:
$ HOME, $ PWD, $ SHELL, $ USER, etc.
Nota: Exibir todas as variáveis no shell atual: set
[root@cent02 ~]# echo $PWD
/root
Variável personalizada
Gramática básica
- Definir variável: variável = valor
- Desfazer variável: não definir variável
- Declare variáveis estáticas: variáveis somente leitura, nota: não pode ser desmarcado
Regras para definir variáveis
- Os nomes das variáveis podem consistir em letras, números e sublinhados, mas não podem começar com números.
- Não pode haver espaços em ambos os lados do sinal de igual
- Nomes de variáveis geralmente são usados em maiúsculas
Atribuir o valor de retorno do comando a uma variável
- A = `ls -la` backquote, execute o comando interno e retorne o resultado para a variável A
- A = $ (ls -la) é equivalente a crases
NN0[root@cent02 ~]# A=`ll`
[root@cent02 ~]# echo $A
total 48 -rw-------. 1 root root 1320 Aug 11 03:20 anaconda-ks.cfg -rw-r--r--. 1 root root 18430 Aug 18 03:57 H:testschool.sql -rw-r--r--. 1 root root 10399 Aug 19 01:12
Definir variáveis de ambiente
nome da variável de exportação = valor da variável (descrição da função: variáveis de shell de saída como variáveis de ambiente)
arquivo de configuração de origem (descrição da função: fazer com que as informações de configuração modificadas tenham efeito imediatamente)
echo $ nome da variável (descrição da função: consultar o valor da variável de ambiente)
Variável de parâmetro posicional
- $ n (descrição da função: n é um número, $ 0 representa o próprio comando, $ 1- $ 9 representa o primeiro ao nono parâmetros, parâmetros acima de dez, parâmetros acima de dez precisam ser colocados entre colchetes, como $ {10})
- $ * (Descrição da função: esta variável representa todos os parâmetros na linha de comando, $ * considera todos os parâmetros como um todo)
- $ @ (Descrição da função: esta variável também representa todos os parâmetros na linha de comando, mas $ @ trata cada parâmetro de maneira diferente)
- $ # (Descrição da função: esta variável representa o número de todos os parâmetros na linha de comando)
Variáveis Predefinidas
- $$ (descrição da função: ID do processo (PID) do processo atual)
- $! (Descrição da função: ID do processo (PID) do último processo em execução em segundo plano)
- $? (Descrição da função: o status de retorno do último comando executado. Se o valor desta variável for 0, isso prova que o comando anterior foi executado corretamente; se o valor desta variável não for 0 (cujo número é determinado pelo próprio comando), então Prove que o comando anterior foi executado incorretamente.)
Operador
- "$ ((Expression))" ou "$ [Expression]"
expr m + n Observe que deve haver espaços entre os operadores expr - expr m-n
expr *, /,% multiplicação, divisão, resto
Julgamento condicional
[condição] (observe que deve haver espaços antes e depois da condição)
# Não vazio retorna verdadeiro, você pode usar $? Para verificar (0 é verdadeiro,> 1 é falso)
Condições de julgamento comumente usadas
-
Comparação de dois inteiros
Opções Descrição -eq igual -nascermos não é igual a -gt mais que o -lt Menor que -a menos que ou igual a -dar Melhor que ou igual a -
Julgue de acordo com as permissões do arquivo
Opções Descrição -d Determine se é um diretório -e Determine se o diretório ou arquivo existe -f Determinar se é um arquivo -r Determine se um arquivo ou diretório pode ser lido pelo usuário atual -W Determine se o arquivo ou diretório é gravável pelo usuário atual -x Determine se o arquivo ou diretório é executável para o usuário atual
Controle do processo
se julgamento
if [ 条件判断式 ];then
程序
fi
ou
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi
Nota: (1) [Fórmula de julgamento condicional], deve haver um espaço entre os colchetes e a fórmula de julgamento condicional (2) O segundo método é recomendado
declaração de caso
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
para loop
for 变量 in 值 1 值 2 值 3…
do
程序
done
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
loop while
while [ 条件判断式 ]
do
程序
done
ler ler entrada do console
read(选项)(参数)
Opções:
-p: especifica o prompt ao ler o valor;
-t: Especifique o tempo de espera (segundos) na leitura do valor, caso não seja inserido dentro do tempo especificado, não esperará mais. .
parâmetro
Variável: especifique o nome da variável para ler o valor
função
Função do sistema
- sintaxe básica de nome de base
Função: retornar à última parte do caminho completo, frequentemente usado para obter o nome do arquivo
nome de base [nome do caminho] [sufixo]
basename [string] [sufixo] (descrição da função: o comando basename irá deletar todos os prefixos incluindo o último ('/')
Caractere e, em seguida, exiba a string.
Opções:
sufixo é o sufixo. Se o sufixo for especificado, o nome de base removerá o sufixo do nome do caminho ou da string.
- Sintaxe básica de dirname
Função: retornar à última / antes da parte do caminho completo, frequentemente usado para retornar à parte do caminho
caminho absoluto do arquivo dirname (descrição da função: remove o nome do arquivo do nome de arquivo fornecido contendo o caminho absoluto (não-diretório
Parte) e, em seguida, retorne ao caminho restante (parte do diretório))
Função personalizada
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]