Bash se a instrução não estiver funcionando corretamente [fechada]

0

Eu tenho uma instrução bash para testar um argumento de linha de comando. Se o argumento passado para o script estiver "limpo", o script removerá todos os arquivos .o. Caso contrário, ele cria um programa. No entanto, não importa o que é passado (se alguma coisa), o script ainda acha que o argumento "clean" está sendo passado.

#!/bin/bash
if test "'whoami'" != "root" ; then
    echo "You must be logged in as root to build (for loopback mounting)"
    echo "Enter 'su' or 'sudo bash' to switch to root"
    exit
fi
ARG=$1
if [ $ARG=="clean" ] ; then
    echo ">>> cleaning up object files..."
    rm -r src/*.o
    echo ">>> done. "
    echo ">>> Press enter to continue..."
    read
else
    #Builds program
fi
    
por Kookerus 09.07.2015 / 08:00

1 resposta

2

Você precisa separar os argumentos para [ com espaços; Além disso, o operador de igualdade é um único = , e você deve citar os dois lados:

if [ "$ARG" = "clean" ]; then
    
por 09.07.2015 / 08:08