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
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
Tags bash shell shell-script arguments