1. Determine se há parâmetros passados quando o script é executado ou determine o número de parâmetros passados
1. Determine se há parâmetros passados quando o script é executado ou determine o número de parâmetros passados
Em um script Shell, para determinar o número de parâmetros, você pode usar variáveis especiais $#
para obter o número de parâmetros passados para o script ou função.
if [ $# -eq 0 ]; then
echo "No arguments provided."
else
echo "Number of arguments: $#"
fi
No exemplo acima, $#
o valor da variável é verificado para ver se há algum argumento passado para o script ou função. Se o número de argumentos for zero, imprima "Nenhum argumento fornecido."; caso contrário, imprima "Número de argumentos: " seguido do número de argumentos.
2. Determine se o arquivo ou pasta existe
1. Determine se o arquivo existe
if [ -f "/path/to/file" ]; then
echo "File exists."
else
echo "File does not exist."
fi
No exemplo acima, substitua /path/to/file pelo caminho real do arquivo a ser verificado. O parâmetro -f é usado para verificar se o caminho é um arquivo comum. Se o arquivo existir, imprima "Arquivo existe."; caso contrário, imprima "Arquivo não existe."
ou
if [[ -f "/path/to/file" ]]; then
echo "File exists."
else
echo "File does not exist."
fi
Ao contrário dos colchetes [], [[ fornece mais funcionalidade e flexibilidade e é mais comumente usado em testes condicionais.
ou
O comando de teste também pode ser usado diretamente para julgamento condicional.
Nota: O caminho no exemplo acima é um caminho esquemático e precisa ser substituído pelo caminho real do arquivo a ser verificado.
Se quiser determinar se existe um diretório em vez de um arquivo, você pode -f
substituir o parâmetro pelo -d
parâmetro.
2. Determine se a pasta existe
if [ -d "relative/path/to/directory" ]; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
No exemplo acima, substitua relativo/caminho/para/diretório pelo caminho da pasta no caminho relativo que você deseja verificar. O parâmetro -d é usado para verificar se o caminho é um diretório . Se o diretório existir, imprima "Diretório existe."; caso contrário, imprima "Diretório não existe.".
ou
if [[ -d "relative/path/to/directory" ]]; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
Ao contrário dos colchetes [], [[ fornece mais funcionalidade e flexibilidade e é mais comumente usado em testes condicionais.
ou
if test -d "relative/path/to/directory"; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
O comando de teste também pode ser usado diretamente para julgamento condicional.
Nota: Os caminhos nos exemplos acima são caminhos relativos, relativos ao diretório de trabalho atual. Certifique-se de definir o diretório de trabalho ou caminho relativo corretamente em seu script. Se você deseja passar um caminho absoluto ou uma variável de caminho, substitua relativo/caminho/para/diretório pelo caminho da pasta ou variável de caminho que deseja verificar.
3. Determine se as strings são iguais
1. Use sinal de igual duplo ==
para comparação:
str1="hello"
str2="world"
if [ "$str1" == "$str2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
No exemplo acima, estamos comparando as strings str1 e str2. Se as duas strings forem iguais, imprima "Strings are equal."; caso contrário, imprima "Strings are not equal.". Observe que você precisa usar aspas duplas ao redor da variável de string antes e depois do sinal de igual duplo == para evitar erros quando a string contém espaços ou caracteres especiais.
2. Use =
para comparar:
str1="hello"
str2="world"
if [ "$str1" = "$str2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
Semelhante ao sinal de igual duplo ==, as comparações de strings também podem ser realizadas usando o sinal de igual único =. A função deles é a mesma.
Nota: O sinal de igual = ou o sinal de igual duplo == são operadores usados para comparações de strings no Shell. Não deve ser confundido com o operador de atribuição.
4. Determine se o comando anterior é executado normalmente
1. Determine se o comando anterior é executado normalmente
Em scripts Shell, você pode usar a variável especial $? para determinar se o comando anterior foi executado normalmente. Esta variável contém o código de status de saída do comando anterior.
Normalmente, um código de status de saída 0 será retornado quando o comando for executado com sucesso e um código de status de saída diferente de zero será retornado quando a execução falhar.
command
if [ $? -eq 0 ]; then
echo "Command executed successfully."
else
echo "Command failed to execute."
fi
No exemplo acima, o comando comando é executado primeiro. Em seguida, $?
determine se a execução foi bem-sucedida verificando o valor da variável. Se o código de status de saída for 0, imprima "Comando executado com sucesso."; caso contrário, imprima "Comando falhou ao executar.".
Nota: $?
O valor da variável representa apenas o código de status de saída do comando anterior, não a mensagem de erro específica.
Se precisar de informações de erro mais detalhadas, você poderá verificar a saída do comando ou redirecionar a saída do comando para um arquivo de log.
2. Obtenha a saída do comando
Em um script shell, existem várias maneiras de obter a saída de um comando:
Use crases (``)
ou $()
operadores:
output=`command`
echo "$output"
ou
output=$(command)
echo "$output"
No exemplo acima, comando é o comando específico a ser executado, que é então $()
agrupado usando crases ou operadores. Isso executará o comando e salvará sua saída na variável de saída. Você pode então usar echo ou outros meios para exibir a saída na variável.
ou
Use símbolos de redirecionamento >
:
command > output.txt
No exemplo acima, comando é o comando específico a ser executado e >
sua saída é redirecionada para o arquivo output.txt usando símbolos de redirecionamento. Usando este método, a saída não será exibida diretamente no terminal.
ou
Use o símbolo de pipe |
:
command1 | command2
Comum:
ls | grep 'work', verifica se há trabalho no diretório atual
ps -ef | grep 'com.android', verifique se o Android existe no processo atual
No exemplo acima, a saída do comando1 se tornará a entrada do comando2. Usando o símbolo de barra vertical, você pode passar a saída de um comando para outro comando para processamento. Vários comandos podem ser conectados em um pipeline conforme necessário.
5. Determine se a string está vazia
1. Em um script Shell, para determinar se uma string está vazia, você pode usar o seguinte método:
Usar -z
parâmetros:
str=""
if [ -z "$str" ]; then
echo "String is empty."
else
echo "String is not empty."
fi
No exemplo acima, definimos str
a string como uma string vazia. Em seguida, use -z
o parâmetro para verificar se a string está vazia. Se a string estiver vazia, imprima "String está vazia."; caso contrário, imprima "String não está vazia.".
ou
Usar -n
parâmetros:
str=""
if [ -n "$str" ]; then
echo "String is not empty."
else
echo "String is empty."
fi
Por -z
outro lado, o uso -n
de parâmetros permite verificar se uma string não está vazia. Se a string não estiver vazia, imprima "String não está vazia."; caso contrário, imprima "String está vazia.".
ou
Use o comprimento da string para comparação:
str=""
if [ ${#str} -eq 0 ]; then
echo "String is empty."
else
echo "String is not empty."
fi
${#str}
Representa obter str
o comprimento da string. Use -eq
operadores para comparar comprimentos de strings para ver se são zero. Se o comprimento da string for zero, imprima "String está vazia."; caso contrário, imprima "String não está vazia.".
Nota: No exemplo acima, str
a variável é uma string vazia. Isso pode ser substituído pela variável de string real a ser verificada.