$bash<ex1
Pode ler em
ex1programar e executar
Sua forma geral é:
$ nome do script bash [parâmetro]
Por exemplo:
$ bash ex2 /usr/meng /usr/zhang
O processo de execução é igual ao método anterior, mas a vantagem deste método é que ele pode ter parâmetros após o nome do script, passando assim os valores dos parâmetros para os comandos do programa, para que um script Shell possa lidar com múltiplas situações, assim como uma função. Ao chamar, os parâmetros reais correspondentes podem ser passados de acordo com o problema específico.
Se você começar com o shell atual (começando com
·significa) para executar um script Shell, você pode usar o seguinte formulário simples:
$ · ex3 [parâmetro]
Defina as permissões do script de shell como executável e execute-o diretamente no prompt.
Métodos específicos:
$ chmod a+x ex4$ ./ex4
Este requisito especifica o Shell específico que executa o script no início do script Shell, por exemplo
/bin/bash:
#!/bin/bash
O Shell recebe o comando (nome do script) digitado pelo usuário e o analisa. Se o arquivo estiver marcado como executável, mas não for um programa compilado, o shell o considerará um script de shell. O shell irá ler o conteúdo, interpretá-lo e executá-lo. Portanto, da perspectiva do usuário, a execução de um script de shell é semelhante à execução de um arquivo executável normal.
Portanto, os scripts shell desenvolvidos pelo usuário podem residir em um diretório no caminho de pesquisa do comando (geralmente
/bin,
/usr/binetc.), use-o como um comando normal. Desta forma, você desenvolve seus próprios novos comandos. Este método é mais conveniente se você planeja usar o script de shell preparado repetidamente.
Você pode atribuir o resultado da execução de um comando a uma variável. Existem duas formas de substituição de comando: uma é usar crases para citar o comando, sua forma geral é:
lista de comandos.
Por exemplo: armazene o nome completo do caminho do diretório de trabalho atual na variável dir e digite a seguinte linha de comando:
$ dir=`pwd`
Outra forma é:
$(lista de comandos). A linha de comando acima também pode ser reescrita como:
$dir=$(senha)
BashSomente matrizes unidimensionais são fornecidas e o tamanho da matriz não é limitado. Semelhante à linguagem C, os subscritos dos elementos do array são numerados a partir de 0. Para obter elementos em um array, use subscritos. O subscrito pode ser um número inteiro ou uma expressão aritmética e seu valor deve ser maior ou igual a 0. Os usuários podem usar instruções de atribuição para atribuir valores a variáveis de array.
A forma geral de atribuição de valores aos elementos do array é:
Nome da matriz [subscrito] = valor,Por exemplo:
$ cidade[0]=Pequim$ cidade[1]=Xangai$ cidade[2]=Tianjin
Também pode ser usado
declararO comando declara explicitamente um array, a forma geral é:
$ declare -um nome de array
O formato geral para leitura dos valores dos elementos do array é:
${nome da matriz[subscrito]},Por exemplo:
$ echo ${city[0]}Pequim
Cada elemento de uma matriz pode ser atribuído elemento por elemento usando o método acima, ou pode ser atribuído em combinação. A forma geral de definir um array e atribuir-lhe um valor inicial é:
Nome da matriz = (valor 1 valor 2 ... valor n)
Cada valor é separado por espaços. Por exemplo:
$ A=(este é um exemplo de script de shell)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}este é um exemplo de script$ echo ${ UMA[8]}
Como existem 7 valores iniciais na tabela de valores, então
UMO número de elementos também é 7.
Um[8]Excede a matriz atribuída
UMrange, é considerado um novo elemento. Como não há valor atribuído antecipadamente, seu valor é uma string vazia.
Se o subscrito do elemento da matriz não for fornecido, o nome da matriz representa o elemento da matriz com subscrito 0, como
cidadeé equivalente a
cidade[0].
usar
*ou
@Quando subscrito, todos os elementos do array serão substituídos.
$ echo ${A[*]}este é um exemplo de shell script
$ eco ${#A[*]}7
Se você quiser escrever um Shell para encontrar a soma de dois números, como poderá implementá-lo? Para introduzir o uso da passagem de parâmetros, escreva um script como este:
$ gato > addlet soma=$1+$2echo $soma
Após salvar, execute:
$ chmod a+x ./add$ ./add 5 1015
Pode-se ver que 5 e 10 são passados para
US$ 1e
US$ 2, esta é a ordem de parâmetros predefinida do próprio shell. Na verdade, você também pode definir as variáveis primeiro e depois passá-las.
Por exemplo, modifique o script acima para obter:
deixe soma=$X+$Yecho $soma
Execute novamente:
$ X=5 Y=10 ./add15
Pode-se descobrir que os resultados corretos também podem ser obtidos.
exportar uma variável de ambiente:
$ exportar opid = Verdadeiro
É isso aí. Se quiser que entre em vigor após o login, você pode adicioná-lo diretamente ao.
/etc/perfilou
~/.bashrcDentro.
pode passar
lerPara ler um valor de variável, por exemplo, para esperar que o usuário insira um valor e o exiba:
$ read -p Por favor insira um valor: input echo Você inseriu um valor: $input Por favor insira um valor: 21500 Você inseriu um valor: 21500
Algumas variáveis importantes do Shell não devem ser modificadas após a atribuição, portanto você pode configurá-las para
somente leitura:
$ oracle_home=/usr/oracle7/bin$ somente leitura oracle_home
gramática:
expressão de testeRetorna verdadeiro se a expressão for verdadeira, caso contrário, retorna falso.
Primeiro, são fornecidos os símbolos de comparação comuns usados em comparações numéricas:
-por exemplo =; -ne !=; -gt >;
$ teste var1 -gt var2
Se o arquivo é legível, gravável e executável depende se é um arquivo comum e se é um diretório:
-r; -w;
$ teste -r nome do arquivo
O comprimento da string é zero:
-z; diferente de zero:-n,como:
$ teste -z s1
se string
s1O comprimento é zero e retorna verdadeiro.
igual
s1=s2; não é iguals1!=s2
Existe outra maneira de comparar strings (você pode compará-las em ordem lexicográfica):
$ if [[ 'abcde' < 'abcdf' ]]; então echo sim, como esperado, como esperado, sim;
As operações que podem ser realizadas com este comando são:
Operações aritméticas:
+ - * /%;Operação lógica:= !
como:
$i=5;expr $i+5
além disso,
a.C.é uma calculadora de linha de comando que pode realizar alguns cálculos aritméticos.
seExemplo de comando: Se o primeiro parâmetro for um nome de arquivo comum, imprima o arquivo em páginas, caso contrário, se for um nome de diretório, insira o diretório e imprima todos os arquivos no diretório. informações relevantes.
if test -f $1then pr $1>/dev/lp0elif test-d $1then (cd $1;pr *>/dev/lp0)else echo $1 não é um arquivo nem um diretóriofi
casoO comando é um comando de ramificação multidirecional baseado na correspondência de padrões. O seguinte determinará qual conjunto de comandos será executado em seguida com base na entrada do teclado do usuário.
while [ $reply!=y ] && [ $reply!=Y ] #A instrução de loop que aprenderemos abaixo faz echo nVocê deseja continuar?(S/N)c leia a resposta #Leia a caixa do teclado $replay in ( y|Y) break;; #Sai do loop (n|N) echo nnTerminandon exit 0;; echo nnPor favor responda y ou n continue #Volte diretamente para o loop interno e comece; continuar esacdone
gramática:
enquanto/até lista de comandos 1do lista de comandos 2feito
A diferença é que após o primeiro executar a tabela de comandos 1, se o status de saída for zero, então execute
fazerA lista de comandos 2 a seguir retornará ao ponto inicial e, após esta executar a lista de comandos 1, só executará operações semelhantes se o status de saída for diferente de zero. Mesmo exemplo acima.
gramática:
para o nome da variável na tabela de strings, faça a tabela de comandos concluída
Exemplo:
ARQUIVO=test1.c meuarquivo1.f pccn.hfor i em $FILEdo cd ./tmp cp $i $i.old echo $idone copiado
Agora vamos dar uma olhada no uso de funções no Shell. Vejamos primeiro um exemplo: escreva uma função e depois chame-a para exibi-la.
Olá, mundo!
$ cat > show# Definição de função function show{ echo $1$2;}H=Hello,W=World!# Chame a função e passe dois parâmetros H e Wshow $H $W
Demonstração:
$ chmod 770 show$./showOlá, mundo!
Você viu algo suspeito?
$ mostrar $H $W
Podemos seguir diretamente o nome da função com os parâmetros reais.
A ordem dos parâmetros reais corresponde aos "parâmetros virtuais"
US$ 1, US$ 2, US$ 3…
Nota: Se você quiser passar um parâmetro, o que deve fazer se houver espaços no meio do parâmetro? Experimente primeiro.
exibir
Olá mundo(Há um espaço entre as duas palavras)
função mostrar{echo $1}HW=Olá Worldshow $HW
Se diretamente
mostrar $HW, definitivamente não é possível, porque
US$ 1Apenas recebido
Olá, então os resultados mostram apenas
Olá, o motivo é que variáveis de string devem ser usadas Contenha-o.
Se você estiver interessado, continue aprendendo!
Há muitas coisas poderosas esperando por você, como
corte,
expressão,
sed,
estranhoetc.