• ベストアンサー

シェルスクリプトが動作しません

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. と表示されます。分法的にどこがおかしいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.1

めちゃくちゃです ^-^; shとcshがごっちゃになっていますね。 その書式のsetコマンドはcshのものです。 case ~ esac 文はshのものです。 caseでエラーが出るということはcshで実行したのですね。 cshのcaseはshのものとは全く意味が違います。 先頭に #! /bin/sh と書くことで、shスクリプトとして実行できます。 setのところは a=`date +%d` のように書き直してください。ここで = の前後には絶対にスペースを入れてはいけません。

apache6
質問者

お礼

shとcshに違いがあるなんて知りませんでした。 ご指摘どおりに書き換えると、見事動きました。 ありがとうございました。

関連するQ&A