68user's page 掲示板

Prev< No. 3579〜3584> Next  [最新発言に戻る] [過去ログ一覧]
No. 3579 # UNIX10ヶ月目 2004/02/22 (日) 21:19:06
No.3568さんに似たような質問なんですが、

ファイルが以下のようにあったとします。
_________________________________________
aaa bb ccc 02/22 ddd e1.3 fff
_________________________________________
その時に、実行するたびにe1.3の数字をe1.4、e1.5と実行
するたびに数字を0.1ずつ変更したいんですがCシェルで
そのような事をしたいのですが、どうしたらいいのでしょうか。
ご教授お願いします。

No. 3580 # zsh 2004/02/23 (月) 18:19:24
>>3579 UNIX10ヶ月目
例えば、0.0から9.9まで表示するには以下のような方法があります。
------
@ i = 0
while ( $i < 10 )
    @ j = 0
    @ n = $i * 10
    while ( $j < 10 )
        @ m = $n + $j
        set cnt = `echo "scale=1; $m/10" | bc`
        printf "0.1f\n" $cnt
        @ j++
    end
    @ i++
end
------
※:シェル変数cntに代入してprintfしているのは、0.0を出力するためです。

>>3575 すすむ
申し訳ありませんが、正規表現について解説された書籍を見るか
Webサイト等を探してください。
自分で回答しておいてなんですが、68user様の方法が良いと思います。
自分のはコマンドを強引に1つにまとめただけですので。

No. 3581 # つとむ 2004/02/24 (火) 11:14:23
Bシェルにつてい教えて下さい。

Bシェルで一次元配列を使用しているのですが、
HP-UX11.00で動いていたシェルスクリプトをSunOS5.8に移して
動かしたのですが上手くうごきません。

MONTHES[0]=Dec: 見つかりません。
MONTHES[1]=Jan: 見つかりません。
        :
置換が正しくありません。

となります。
どうのように修正すれば、動きますか。

------------------
#!/bin/sh
#

MONTHES[0]="Dec"
MONTHES[1]="Jan"
MONTHES[2]="Feb"
MONTHES[3]="Mar"
MONTHES[4]="Apr"
MONTHES[5]="May"
MONTHES[6]="Jun"
MONTHES[7]="Jul"
MONTHES[8]="Aug"
MONTHES[9]="Sep"
MONTHES[10]="Oct"
MONTHES[11]="Nov"

i=0
while [ $i -le 11 ]
do
        echo ${MONTHES[$i]}
        i=`expr $i + 1`
done

No. 3582 # zsh 2004/02/24 (火) 18:29:28
これなら動く筈。(未確認)

------------------
#!/bin/sh
#

MONTHES0="Dec"
MONTHES1="Jan"
MONTHES2="Feb"
MONTHES3="Mar"
MONTHES4="Apr"
MONTHES5="May"
MONTHES6="Jun"
MONTHES7="Jul"
MONTHES8="Aug"
MONTHES9="Sep"
MONTHES10="Oct"
MONTHES11="Nov"

i=0
while [ $i -le 11 ]
do
                eval echo $"MONTHES$i"
                i=`expr $i + 1`
done

No. 3583 # すすむ 2004/02/24 (火) 22:06:04
>3582

zshさん
ありがとうございます。
上手くいきました。

No. 3584 # つとむ 2004/02/25 (水) 01:54:25
>3582

UNIXといってもHP-UXとSunOS(Solaris)で違うのだから
Bシェルだからといって同じ機能jが使えるわけではない
のですね。

Prev< No. 3579〜3584> Next  [最新発言に戻る] [過去ログ一覧]