shスクリプトを書いてみました(添削を期待)

add to hatena hatena.comment 0 user add to del.icio.us 0 user add to livedoor.clip 0 user

諸事情により、httpd.conf内の「AddDefaultCharset」の行をコメントアウトするshスクリプトを書きました。
shスクリプトは馴染みがなくて分からないながらも色々参考にしつつ書きました。

晒し上げつつ、添削を期待する次第です。

#!/bin/sh

CONF_FILE=/etc/httpd/conf/httpd.conf
TMP_FILE=/tmp/httpd.conf
touch ${TMP_FILE}

#ファイル内の'\'は'\\'に置換してから
sed 's/\\/\\\\/g' ${CONF_FILE} | while read line
do
  case ${line} in

    #ここでの正規表現の書き方がよくわからん
    AddDefaultCharset*)
      echo -e "#${line}" >> ${TMP_FILE}
    ;;
    *)
      echo -e "${line}" >> ${TMP_FILE}
    ;;
  esac
done

mv ${CONF_FILE} ${CONF_FILE}.org
mv -f ${TMP_FILE} ${CONF_FILE}

5件のコメント to “shスクリプトを書いてみました(添削を期待)”

  1. hara さん:

    シェルスクリプトは僕もよくわからんですが、置換なら sed だけでもできます。

    #!/bin/sh

    CONF_FILE=/etc/httpd/conf/httpd.conf
    TMP_FILE=/tmp/httpd.conf

    sed -e "s/^AddDefaultCharset/\#AddDefaultCharset/" ${CONF_FILE} > ${TMP_FILE}

    mv ${CONF_FILE} ${CONF_FILE}.orig
    mv ${TMP_FILE} ${CONF_FILE}

    こんな感じとか。ただのコマンドの羅列になりますが。

  2. massat さん:

    ぐはっほんとだw

    頑張ってループつかってたりしてアホすぎる。
    ご指摘ありがとうございます!

  3. hara さん:

    でもシェルスクリプトでループとかバリバリ書ける人になりたいです。
    ターミナルにインラインですらすらっと書きたい。

  4. 面倒くさがり屋さん さん:

    http://www.value-press.com/pressrelease.php?article_id=22029&php_value_press_session=7113c1b474a3b5a6cfa5f9e97ecf3139

    から来た俺がコメントしますよ。

    cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig ; echo
    “%s/^AddDefaultCharset/\#AddDefaultCharset/g\nw\n” | ed - /etc/httpd/conf/httpd.conf

    じゃないですかね。

    参考:
    http://at-aka.blogspot.com/2006/12/ed-sed.html

    edってなにげに便利。

  5. massat さん:

    ほぉぉぉこれはイカス。
    ワンライナーイカス。

    ありがとうございます!!

Leave a Reply