2007年04月16日

shでスクリプトを書く件

sh(bash)でスクリプトを書いていて、はまったので書いておきます。

変数$aと$bが両方とも空だったら○○と書きたくて、下記のように書いたらエラーになってしまいました。

if [ -z $a -a -z $b]
echo "hoehoe!"
fi

なぜエラーになるのかさっぱりわからなかったのですが、こういう事でした。

if [ -z $a -a -z $b] ; then
echo "hoehoe!"
fi


セミコロンとthenがいるのですね。

もう1つ。
sambaで共有されていたので、Windowsのエディタでスクリプトを下記のように書くと、

#!/bin/sh

echo 'ngng!'

次のようにエラーになります。
: bad interpreter: そのようなファイルやディレクトリはありません

これはさっぱりわかりませんでした。

同じスクリプトをviで作成すると、問題なく実行されます。
diffをとってみると、全行違いますがく〜(落胆した顔)

…改行が\r\nになっていたからでした。
普通にviとかcatで見てもわからないですふらふら

od -c ファイル名

で見ると、
0000000 # ! / b i n / s h \r \n \r \n e c h
0000020 o ' n g n g ! ' \r \n
0000033
と出てきます。
viで作ったファイルは、

0000000 # ! / b i n / s h \n \n e c h o
0000020 ' n g n g ! ' \n
0000030

というわけです。
Windowsのエディタで、改行コードをLFにして保存して、めでたしめでたしデス。
posted by ほえ at 20:58| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/38925164
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。