O que faz o ENDOFMENU? [fechadas]

0

Eu recebi um exemplo de programa, estou querendo saber o que exatamente o <<ENDOFMENU e ENDOFMENU faz, não funcionará da mesma forma se você o deixar de fora e apenas usar o loop while?

#!/bin/sh
echo "Menu test program...";
stop=0;
while test $stop -eq 0; do
cat<<ENDOFMENU
1: print the date
2,3 : print the current working directory
4: exit
ENDOFMENU
  echo; echo -e "your choice?\c"
  read reply
echo
case $reply in
    "1")
       date
;;
    "2"|"3")
       pwd
;;
    "4")
      stop=1
;;
    *)
      echo illegal choice
  esac
done
    
por Raymond 16.09.2012 / 23:08

1 resposta

3

ENDOFMENU , conforme usado no seu exemplo, é um chamado aqui documento ou aqui doc . Ele permite uma seqüência de várias linhas sem a necessidade de escapar citando caracteres como ' e " .

Citando o manual bash(1) :

% bl0ck_qu0te%

Você mostrou o seguinte código no seu exemplo:

cat<<ENDOFMENU
1: print the date
2,3 : print the current working directory
4: exit
ENDOFMENU
  echo; echo -e "your choice?\c"

Isso torna uma string disponível como fluxo e depois as imprime no console usando o comando cat . Finalmente, ele imprime outra linha em branco seguida pela seqüência de caracteres your choice? e uma sequência de escape que significa "não produz saída adicional" e remove efetivamente a nova linha que se segue. Pode ser reescrito como:

echo -e "    1: print the date
2,3 : print the current working directory
4: exit

your choice?\c"
    
por Lekensteyn 16.09.2012 / 23:16