Latest web development tutorials

Shell? Variable

Variáveis ​​de shell

Quando você define uma variável, o nome da variável, sem um sinal de dólar ($, variáveis ​​de linguagem PHP necessário), tais como:

your_name="w3big.com"

Note-se que não há nenhum espaço entre o nome da variável e o sinal de igual, o que pode ser familiar para você e todas as linguagens de programação não são os mesmos. Enquanto isso, o nome da variável deve seguir estas regras de nomenclatura:

  • O primeiro caractere deve ser uma letra (az, AZ).
  • Sem espaços, use um sublinhado (_).
  • Você não pode usar a pontuação.
  • Você não pode usar o bash no palavra-chave (comando de ajuda para ver as palavras-chave reservadas disponíveis).

Além explicitamente atribuição direta, você também pode atribuir valores a variáveis ​​com declarações como:

for file in `ls /etc`

A declaração acima o nome do arquivo / etc fora de circulação.


usando variáveis

Use uma variável definida, desde que o nome da variável precedido por um sinal de dólar, como este:

your_name="qinjx"
echo $your_name
echo ${your_name}

Nome da variável fora das chaves são opcionais, além de sem tudo bem, adicione chaves para ajudar a explicar as variáveis ​​de identificação de fronteira, como o caso que se segue:

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

Se você não dá variáveis ​​de habilidade, mais cintas, escritas echo "eu sou bom em US $ skillScript", o intérprete vai colocar US $ skillScript como uma variável (o seu valor está vazio), a execução de código não é o resultado que esperamos o mesmo novamente.

Diga todas as variáveis ​​chaves, é uma boa prática de programação.

variáveis ​​definidas, pode ser re-definida, tais como:

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

Escrever é legal, mas observe que quando a segunda atribuição não pode escrever $ your_name = "Alibaba", use uma variável quando ele é adicionado ao sinal de dólar ($).

Variáveis ​​de leitura

Use o comando variáveis ​​somente leitura pode ser definido como somente leitura variável, o valor de somente leitura variáveis ​​não pode ser alterado.

Os exemplos a seguir tentar alterar as variáveis ​​de somente leitura, os resultados que está sendo dado:

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.w3big.com"

Executar o script com os seguintes resultados:

/bin/sh: NAME: This variable is read only.

Remover variável

Use o comando unset para apagar uma variável. sintaxe:

unset variable_name

Variável não pode ser reutilizado depois de ser removido. comando unset não é possível remover as variáveis ​​somente leitura.

Exemplos

#!/bin/sh
myUrl="http://www.w3big.com"
unset myUrl
echo $myUrl

Exemplos da implementação do acima não terá saída.

Tipos de variáveis

Quando você executar o shell, haverá três parâmetros simultaneamente:

  • 1) Variáveis locais As variáveis locais definidos no script ou comando só é válido no caso shell atual, outro programa de inicialização do shell não pode acessar variáveis locais.
  • 2) as variáveis ambientais de todos os programas, incluindo o programa shell iniciados, pode acessar variáveis de ambiente, algumas aplicações requerem variáveis de ambiente para assegurar o seu funcionamento normal. Quando necessário, o shell script também pode definir variáveis ​​de ambiente.
  • 3) variáveis Shell Shell variável é uma variável especial definido pelo programa shell. shell parte variável da variável de ambiente, alguns são variáveis ​​locais para garantir o funcionamento normal da concha

cadeia Shell

programação shell String é os tipos de dados mais comuns e úteis (exceto números e strings, também carece de outros tipos de mão), strings podem ser colocados entre aspas simples, aspas duplas também pode ser usado, ou não pode ser entre aspas. A diferença entre aspas simples e duplas com PHP é semelhante.

aspas simples

str='this is a string'

Individuais citadas restrições cordas:

  • Quaisquer caracteres entre aspas simples são emitidos como aspas simples na variável de cadeia é inválido;
  • cordas simples citado não pode aparecer em uma única citação (usar aspas simples após o caractere de escape nem).

aspas duplas

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

Duplo cita vantagens:

  • aspas duplas podem ter variável
  • aspas duplas podem aparecer caractere de escape

concatenação

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

Obter comprimento da corda

string="abcd"
echo ${#string} #输出 4

substring Extract

Os exemplos a seguir das duas primeiras cadeias de caracteres iniciar a captura de quatro personagens:

string="w3big is a great site"
echo ${string:1:4} # 输出 unoo

encontrar substring

Encontrar caráter "i ou s" position:

string="w3big is a great company"
echo `expr index "$string" is`  # 输出 8

Nota: O script acima "` "anti-aspas em vez de aspas simples" "" Não se deixe enganar, oh.


matriz Shell

bash suporta matriz unidimensional (não suporta matrizes), e não define o tamanho da matriz.

Semelhante à linguagem C, o índice de elementos da matriz de número 0 começo. Obtém uma matriz de elementos de aproveitar o subscrito, o índice pode ser um número inteiro ou expressão aritmética cujo valor deve ser maior do que ou igual a 0.

definir matrizes

No Shell, use parênteses para denotar uma matriz, os elementos da matriz com os símbolos "espaço" separadas. A forma geral de uma matriz é definida como se segue:

数组名=(值1 值2 ... 值n)

Por exemplo:

array_name=(value0 value1 value2 value3)

ou

array_name=(
value0
value1
value2
value3
)

Você também pode definir separadamente para cada componente da matriz:

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

Você não pode usar um índice contínuo, e não há limite no âmbito do intervalo alvo.

Leia matriz

O formato geral é lido valor de elemento de matriz:

${数组名[下标]}

Por exemplo:

valuen=${array_name[n]}

Use o símbolo @ pode obter uma matriz de todos os elementos, tais como:

echo ${array_name[@]}

Veja o comprimento da matriz

Obtém uma matriz de comprimentos de comprimento da corda e obter o mesmo caminho, por exemplo:

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

shell Notas

Linha com "#" no início do comentário, será ignorada pelo intérprete.

sh não há comentários multi-linha, cada linha só pode adicionar um sinal de #. Só assim:

#--------------------------------------------
# 这是一个注释
# author:本教程
# site:www.w3big.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

Se o processo de desenvolvimento, o encontro de grandes blocos de código precisa comentar temporariamente depois de um tempo e comentada, como fazê-lo?

Cada linha adicionar um símbolo # muito trabalhoso, você pode colocar um pouco de código a ser anotada com um par de chaves, definida como uma função, não há lugar para chamar esta função, este código não será executado, e chegou como anotações efeito.