Simples se o comando não estiver funcionando no script csh

1

O problema é que quando eu executo este script usando source overspeed (depois de me dar permissão de execução), ele me pergunta "Com que rapidez você está indo?" como o que eu defini, mas depois que eu insiro qualquer valor, dá um erro "Evento não encontrado" em vez de exibir "Você está com excesso de velocidade !!!".

Aqui está o meu script:

#!/bin/csh
# Over speed indicator
#
echo -n "How fast are you going?"
set speed = $<
if (speed > 100) echo "You are over speeding!!!"
    
por Anonymous 20.06.2016 / 01:13

1 resposta

2

Existem alguns erros no seu script. A primeira linha deve apontar para o executável csh , que você identificou nos comentários como /usr/bin/csh (em vez de /bin/csh ). A linha if está faltando o $ para identificar speed como uma variável. Aqui está um script corrigido

#!/usr/bin/csh
# Over speed indicator
#
echo -n "How fast are you going?"
set speed = $<
if ($speed > 100) echo "You are over speeding\!\!\!"

O ideal seria, então, executá-lo como ./overspeed em vez de source overspeed , para que qualquer variável definida seja retida em seu próprio contexto, em vez de poluir seu shell interativo.

Melhor do que tudo isso, pare de tentar aprender uma linguagem de shell que é fundamentalmente quebrada para o script e use uma das sh variants ( ksh ou bash ). Aqui está seu script reescrito para usar bash :

#!/bin/bash
# Over speed indicator
#
read -p "How fast are you going? " speed
if $(( speed > 100 ))
then
    echo 'You are over speeding!!!'
fi

Como antes, se o arquivo de script for executável, você poderá executá-lo com ./overspeed .

    
por 20.06.2016 / 01:58