English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ao definir uma variável, o nome não deve conter o símbolo de dólar ($, necessário no PHP), por exemplo:
seu_nome="w"3codebox.com"
Atenção, o nome da variável e o sinal de igual (=) não podem ter espaços, isso pode ser diferente de todos os outros idiomas de programação que você está familiarizado. Além disso, o nome da variável deve seguir as seguintes regras:
O nome pode usar letras, números e sublinhados, e o primeiro caractere não pode começar com um número.
Não pode haver espaços no meio, pode usar sublinhado (_).
Não pode usar símbolos de pontuação.
Não pode usar palavras-chave do bash (pode usar o comando help para ver as palavras-chave reservadas).
Exemplos de nomes válidos de variáveis do Shell a seguir:
w3codebox LD_LIBRARY_PATH _var var2
Nome de variável inválido:
?var=123 user*name=w3codebox
Além de atribuir explicitamente, também é possível usar instruções para atribuir valores a variáveis, por exemplo:
for file in `ls /etc` ou for file in $(ls /etc)
As seguintes instruções farão: /loop de nomes de arquivos no diretório etc.
Para usar uma variável definida, basta adicionar o símbolo de dólar ($) no início do nome da variável, por exemplo:
your_name="qinjx" echo $your_name echo ${your_name}
As chaves {} ao redor do nome da variável são opcionais, pode ou não ser adicionado, as chaves são usadas para ajudar o interpretador a identificar os limites da variável, por exemplo:
for skill in Ada Coffee Action Java; do echo "I am good at ${skill}Script" done
Se não adicionar chaves {} à variável skill, escrevendo echo "I am good at $skillScript", o interpretador interpretará $skillScript como uma variável (cujo valor está vazio), e o resultado da execução do código não será o esperado.
Recomenda-se adicionar chaves {} a todas as variáveis, isso é um bom hábito de programação.
Variáveis definidas podem ser redefinidas, por exemplo:
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
Escrever assim é permitido, mas atenção, na segunda atribuição, não pode ser escrito $your_name="alibaba", use o símbolo de dólar ($) apenas ao usar variáveis.
O comando readonly pode ser usado para definir variáveis como variáveis de leitura apenas, o valor dessas variáveis não pode ser alterado.
O exemplo a seguir tenta alterar a variável de leitura apenas, resultando em erro:
#!/bin/bash myUrl="https://www.google.com" readonly myUrl myUrl="https://pt.oldtoolbag.com"
Executar o script, o resultado será:
/bin/sh: NAME: This variable is read only.
O comando unset pode ser usado para excluir variáveis. Sintaxe:
unset variable_name
Após a exclusão da variável, ela não pode ser usada novamente. O comando unset não pode excluir variáveis de leitura.
Exemplo
#!/bin/sh myUrl="https://pt.oldtoolbag.com" unset myUrl echo $myUrl
A execução do exemplo acima não terá nenhuma saída.
Quando o shell é executado, existem três tipos de variáveis em simultâneo:
1) Variáveis locaisAs variáveis locais são definidas dentro de scripts ou comandos e são válidas apenas no exemplo atual do shell, outros programas iniciados pelo shell não podem acessar as variáveis locais.
2) Variáveis de ambienteTodos os programas, incluindo os programas iniciados pelo shell, podem acessar as variáveis de ambiente, alguns programas precisam das variáveis de ambiente para garantir seu funcionamento normal. Em necessário, scripts de shell também podem definir variáveis de ambiente.
3) Variáveis do shellAs variáveis do shell são variáveis especiais configuradas pelo programa shell. Parte das variáveis do shell são variáveis de ambiente e parte são variáveis locais, essas variáveis garantem o funcionamento normal do shell
As strings são o tipo de dados mais comum e útil no programming de shell (além dos números e strings, não há muitos outros tipos de dados úteis), as strings podem ser usadas com aspas duplas, aspas simples, ou nem usar aspas.
str='this is a string'
Restrições das strings de aspas simples:
Qualquer caractere dentro das aspas simples será exibido na forma original, as variáveis dentro de uma string de aspas simples são inválidas;
Não pode haver um único caractere de aspa simples dentro de uma string de aspas simples (mesmo após o caractere de escape também não pode), mas pode aparecer em pares, como parte da concatenação de strings.
your_name='w3codebox' str="Hello, I know you are \"$your_name\"! \n" echo -e $str
O resultado da saída é:
Olá, eu sei que você é "w3codebox"!
Vantagens das aspas duplas:
As variáveis podem estar dentro das aspas duplas
Os caracteres de escape podem aparecer dentro das aspas duplas
seu_nome="w"3codebox # Usar aspas duplas para concatenar greeting="hello, "${seu_nome}" !" greeting_1="hello, ${seu_nome} !" echo $greeting $greeting_1 # Usar aspas simples para concatenar greeting_2='hello, '${seu_nome}' !' greeting_3='hello, ${seu_nome} !' echo $greeting_2 $greeting_3
O resultado da saída é:
hello, w3codebox ! hello, w3codebox ! hello, w3codebox ! hello, ${seu_nome} !
string="abcd" echo ${#string} # saída 4
O exemplo a seguir extrai a substring a partir da string na posição 2 caractere começando a cortar 4 caractere:
string="w3codebox é um excelente site echo ${string:1:4} # saída unoo
AtençãoO índice do primeiro caractere é: 0.
procurar caractere i ou o a posição (qual letra aparece primeiro é calculada):
string="w3codebox é um excelente site echo `expr index "$string" io` # saída 4
Atenção: No script acima, ` é o caractere de contrabarra invertida, não o caractere de aspa simples '.
O bash suporta arrays unidimensionais (não suporta arrays multidimensionais) e não há restrições no tamanho do array.
Semelhante ao C, os índices dos elementos do array começam a ser numerados por 0. Para obter um elemento do array, é necessário usar o índice, que pode ser um número inteiro ou uma expressão aritmética, cujo valor deve ser maior ou igual a 0.
No Shell, os parênteses são usados para representar arrays, e os elementos do array são separados por "espaços". A forma geral de definir um array é:
nome_do_array=(valor1 valor2 ... valor n)
por exemplo:
array_name=(value0 value1 value2 value3)
ou
array_name=( value0 value1 value2 value3 )
Também pode definir separadamente cada componente do array:
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
Pode não usar índices contínuos e o intervalo de índices não tem restrições.
O formato geral para ler um valor de elemento de array é:
${nome_do_array[índice]}
por exemplo:
valuen=${array_name[n]}
O símbolo @ pode ser usado para obter todos os elementos do array, por exemplo:}}
echo ${array_name[@]}
A maneira de obter o comprimento do array é a mesma que a de obter o comprimento de uma string, por exemplo:
# Obter o número de elementos do array length=${#array_name[@]} # Ou length=${#array_name[*]} # Obter o comprimento de um elemento individual do array lengthn=${#array_name[n]}
Linhas que começam com # são comentários e serão ignorados pelo interpretador.
Adicionar um # a cada linha # Configuração de comentários em múltiplas linhas, assim:
#-------------------------------------------- # Isso é um comentário # autor: Tutorial Básico # site: pt.oldtoolbag.com # slogan: Aprender o básico, para ir mais longe! #-------------------------------------------- ##### Área de Configuração do Usuário INÍCIO ##### # # # Aqui pode-se adicionar informações de descrição do script # # ##### Área de Configuração do Usuário FIM #####
O que fazer se, durante o desenvolvimento, precisar comentar um grande bloco de código temporariamente e descomentá-lo mais tarde?
Adicionar um símbolo # a cada linha é muito trabalhoso, então pode-se usar um par de chaves {} para definir um bloco de código a ser comentado, que não será executado em nenhum lugar, alcançando o efeito de comentários.
Os comentários em múltiplas linhas também podem usar o seguinte formato:
:<<EOF Conteúdo de Comentário... Conteúdo de Comentário... Conteúdo de Comentário... EOF
EOF também pode usar outros símbolos:
:<<' Conteúdo de Comentário... Conteúdo de Comentário... Conteúdo de Comentário... ' :<<! Conteúdo de Comentário... Conteúdo de Comentário... Conteúdo de Comentário... !