- 締切済み
「/sbin/rcS」内の情報をリダイレクトしたい
いつも参考にさせてもらってます。 <前提> Solaris系はあまり詳しくないので質問に際して情報不足があるやもしれません。 もし過不足があればお教え下さい。 以下の環境下において質問があります。 SunOS [hostname(だと思う)] 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Blade-100 客先要望で通常起動状態(ランレベル:3)からシングルモード(ランレベル:S)へと 移行する際、「/etc/rcS.d」配下に格納されている停止用スクリプト(K[xx]○○)間の ランニングタイムを計測してもらいたいという依頼があり、「/sbin/rcS」のスクリプト内に 下記のコマンド群("※"マーク)を入れようとしております。 (リダイレクションでルート配下にログを出力する) ----- 「/sbin/rcS」スクリプト(一部抜粋) ----- for f in /etc/rcS.d/K*; do if [ -s $f ]; then case $f in ※echo "012 `date "+%Y/%m/%d%H:%M:%S"`" >> /chk.log *.sh). $f ;; *)/sbin/sh $f stop ;; ※echo "013 `date "+%Y/%m/%d%H:%M:%S"`" >> /chk.log esac fi done ----- 「/sbin/rcS」スクリプト(一部抜粋) ----- 実際にコマンド群を入れてランレベルを 通常起動状態の"3"から"シングルモード"へと 移行するコマンド("shutdown -is -y -g0"、"init s")を 実行したのですが、下記のエラーが出てしまいました。 「/sbin/rcS:syntax error at line 379:"012 \t\t `date "+%Y/%m/%d\t%H:%M:%S"`" unexpected」 このエラーを回避してランニングタイムを計測するのは可能なのでしょうか? また、発生する原因は何故なのでしょうか? お手数ではありますが、皆様のお知恵を貸して下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zsh
- ベストアンサー率68% (11/16)
いや、だから saaya_holic さんが言いたいのは 「echo を挿入する位置がおかしい」ってことだと思いますが・・・。 どんな条件でも実行させたいなら、case 文の前後に入れればいいのでは?
- saaya_holic
- ベストアンサー率23% (46/195)
caseの構文が変です。 case 変数 in ケース1 ) 実行文 ;; ケース2 ) 実行文 ;; ~~~ * ) その他の場合の実行文 ;; esac
補足
saaya_holicさん、ありがとうございます。 インデントを施していないため見辛かったです、すみません。 下記に記したのはインデントを施したソースになります。 ちなみにecho文(※マークのところ)のみ私が追加したもので、 それ以外は「/sbin/rcS」スクリプトの本文になっております。 (原文の323行目から330行目の辺りにecho文を下記の通りにいれております) ------------------------------------------------------------ for f in /etc/rcS.d/K*; do if [ -s $f ]; then case $f in echo "012 \t\t `date "+%Y/%m/%d\t%H:%M:%S"`" >> /chk.log *.sh) . $f ;; *) /sbin/sh $f stop ;; echo "013 \t\t `date "+%Y/%m/%d\t%H:%M:%S"`" >> /chk.log esac fi done ------------------------------------------------------------ 以上、宜しくお願い致します。
お礼
zshさん、saaya_holic さん ありがとうございました。 当方の認識不足でした。 確かにCase文の途中でコマンド入れちゃうと落ちいますよね・・・。 お二方ともご指摘ありがとうございました。 当お礼を以ってCloseとさせて頂きます。