スクリプトはMacでは動作しますが、Ubuntuでは動作しません。

スクリプトはMacでは動作しますが、Ubuntuでは動作しません。

スクリプトはMacコンピュータで実行され、出力ファイルを生成しますが、Ubuntuコンピュータはエラーメッセージを生成します。どちらの例も Bash シェルを使用しています。

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

答え1

次のようにファイルを実行するsh filename.shと、bash私のUbuntu 12.04システムでソフトリンクsh(使用;を参照)/bin/sh/bin/dashd「ダッシュは/bin/shです」)。

を使用するbash filename.shか、shebang行を使用してファイルを実行可能にする必要があります(chmod +x filename.sh)。

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

od -c file_nameMacからUbuntuにファイルを移動するときに確認する必要があるものの1つは、出力に「\ r」文字がありますが、\n変換する必要がある場合はファイルの改行(使用)です。たとえば、次のようにします。

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

答え2

いくつかの追加の選択肢:

sh filename.sh

はい

source filename.sh

そして

. filename.sh

私は1日に数回UbuntuとOSXの間を行き来してドットファイルを共有しますが、これは私には効果があるようです。

.bash_profile参考までに、OSX関連の項目はそこに置かれ、両方のシステムに共通の項目がsourceあります。.bashrc

関連情報