- - PR -
シェルスクリプト内での変数設定について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-06-02 18:24
お世話になっております。むーでございます。
度々シェルスクリプトについて質問させていただきます。 以下のawk文が完全に解読できませんでした。。。 --------------------------------------------- awk -F'#' '{print $1}' /tmp/aaa.txt |\ while read line do parm=${line%%:*} case $parm in ("mailto") MAILTO=${line##mailto:} ;; ("maxfilesize") MAXFSIZE=${line##maxfilesize:} ;; ("debug") DEBUG=${line##debug:} ;; ("*") ;; esac done --------------------------------------------- なお、/tmp/aaa.txtファイルには ------------------------ mailto:muh@xyz.com #mail address maxfilesize:15000000 debug:1 ------------------------ と書いてあります。 おそらく、awkによって 「/tmp/aaa.txtファイルを1行ずつ読み取り、そのうち 1カラム目("#"を区切り文字として)をline変数にセット」 しているものと思うのですが、その後で各行をparm変数にセット している場所があります。 ここで具体的にどういうことをしているのか、が分からないため MAILTO変数などにセットされる値がわかりません。 こちらについてご指導いただけますでしょうか。 よろしくお願いします! |
|
投稿日時: 2003-06-02 19:45
ども。raccoonです。
${AAA%%BBB}や${CCC##DDD}はKシェル独特の書き方です。 BシェルやCシェルではできません(OSによってはできちゃうかも知れませんが)。 「パラメタの置換」などと呼ばれる機能で,パラメタの一部を削除してくれます。 詳しくは man ksh を見れば説明があります。 # のはず。OSによってはmanにちゃんと書いてないこともあるらしいけど・・・ |
|
投稿日時: 2003-06-03 10:10
raccoonさん、
いつも早々たるご回答、加えてわかりやすいご回答をくださいまして 本当にありがとうございます! だからSolaris上で且つBシェルの場合にこの部分がエラーになるんですね〜。 もはや感動の域に達しています(大げさじゃなくデス)! 最後に。 私の投稿を見ていただいている皆さん、 幾度もSolarisの話をしてしまい申し訳ありません。 この場をお借りしてお詫びいたします。 |
1