- ベストアンサー
シェルスクリプトが動作しません
OSはDebian GNU/Linux 3.0です。 set a = `data +%d` set b = `expr $a/7` echo $b は正常に実行した日付を7で割った値が表示されます。 set a = `data +%d` set b = `expr $a/7` echo $b case $a in 1) ls ;; 2) echo $b ;; esac とすると case: too many arguments. と表示されます。分法的にどこがおかしいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
めちゃくちゃです ^-^; shとcshがごっちゃになっていますね。 その書式のsetコマンドはcshのものです。 case ~ esac 文はshのものです。 caseでエラーが出るということはcshで実行したのですね。 cshのcaseはshのものとは全く意味が違います。 先頭に #! /bin/sh と書くことで、shスクリプトとして実行できます。 setのところは a=`date +%d` のように書き直してください。ここで = の前後には絶対にスペースを入れてはいけません。
お礼
shとcshに違いがあるなんて知りませんでした。 ご指摘どおりに書き換えると、見事動きました。 ありがとうございました。