Você deve usar espaços em branco ao usar o operador de comparação =
. [ ]
é uma função interna do shell. Portanto, você precisa passar todos os argumentos com espaços. Então você deve fazer assim:
if [ "$ANSWER" = "N" ]
Fonte: link
Eu sou muito novo para bater, apenas brincando no meu tempo livre fora do trabalho. Eu quero verificar se existe um arquivo, e se ele não existe, eu quero perguntar ao usuário se eles gostariam de criá-lo. Quer o usuário insira Y ou N, somente "Whatever you say" aparece na tela. Agradecemos antecipadamente.
#!/bin/bash
#This is testing if a file (myFile) exists
if [ -f ~/myFile ]
then
echo "The file exists!"
else
echo "The file does not exist. Would you like to create it? (Y/N)"
read ANSWER
fi
if [ "$ANSWER"="N" ]
then
echo "Whatever you say!"
else
touch myFile
echo "The file has been created!"
fi
Você deve usar espaços em branco ao usar o operador de comparação =
. [ ]
é uma função interna do shell. Portanto, você precisa passar todos os argumentos com espaços. Então você deve fazer assim:
if [ "$ANSWER" = "N" ]
Fonte: link
Você precisa de espaços em torno do operador =
.
if [ "$ANSWER" = "N" ]
Quando preciso de correspondência de texto, prefiro usar case
over test
ou [ ... ]
, porque é mais flexível e eficiente.
FILE=~/myFile
if [ -f "$FILE" ]
then
echo "The file exists!"
else
echo -n "The file does not exist. Would you like to create it? (Y/N) "
read ANSWER
shopt -s nocasematch
case "$ANSWER" in
n|no)
echo "Whatever you say!"
;;
*)
touch "$FILE"
echo "The file has been created!"
;;
esac
shopt -u nocasematch
fi