Script trabalhando no Mac, mas não no Ubuntu

5

O script é executado em uma máquina Mac e cria o arquivo de saída, embora em uma máquina Ubuntu ele gere uma mensagem de erro. Bash shell é usado em ambas as instâncias.:

1 - /var
2 - /etc : 
1
: bad variable name: read: word
first_part(1).sh: 6: first_part(1).sh: Syntax error: newline unexpected (expecting ")")

-

echo "To scan through the directories /var and /etc type 1 or 2: "
echo "1 - /var"
echo "2 - /etc : "
read word
case $word in
         1)
                find /var -type d -follow -ls | awk '{print $3, $5, $6, $11}' > var.txt
                echo "Your file containing /var information has been created."
                ;;
         2)
                find /etc -type d -follow -ls | awk '{print $3, $5, $6, $11}' > etc.txt
                echo "Your file containing /etc information has been created."
                ;;
         *)
                echo "Please insert a valid input"
                continue
                ;;

esac
    
por nicoX 06.11.2014 / 12:32

2 respostas

8

Se você executar o arquivo usando sh filename.sh , um problema é que, no seu sistema Ubuntu, isso pode não executar bash , mas algum outro shell. No meu sistema Ubuntu 12.04, sh é /bin/sh e tem um link para /bin/dash (com d ; consulte "Dash as / bin / sh ").

Você deve usar bash filename.sh ou usar uma linha shebang e tornar o arquivo executável ( chmod +x filename.sh ).

#!/bin/bash
echo "To scan through the directories /var and /etc type 1 or 2: "
echo "1 - /var"
.
.

Uma coisa a verificar ao mover arquivos do Mac para o Ubuntu são as novas linhas do arquivo (use od -c file_name ), se houver caracteres "\ r" na saída, mas não \n você precisa converter, usando:

tr '\r' '\n' < file_name > new_file_name .

    
por 06.11.2014 / 12:55
0

Mais algumas alternativas para:

sh filename.sh

são

source filename.sh

e

. filename.sh

alterno entre o Ubuntu e o OSX várias vezes ao dia e compartilho meus dotfiles e isso parece funcionar para mim.

fyi para coisas específicas do OSX eu coloquei em .bash_profile e então source ' .bashrc que tem coisas comuns a ambos os sistemas.

    
por 07.11.2014 / 12:13