Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【シェルスクリプト】配列を使いたい

(2010/12/16の元記事) 

 

C言語だと配列はけっこう序盤に出てきて、いろんなところで役に立つんですが
シェルスクリプトにも配列が存在することをさっき知りました。

どこかで役に立たないかなーと思ってメモ
シェルはBシェルです

 

$HOGE=(1 2 3)
$BAR=(a b c)

原則通り=の両側にスペースは入れない
配列の要素はスペースで区切る
また要素全体は中括弧 { } ではなく括弧 ( ) で区切ること
(↑ここで30分もつまずいてしまいました(苦笑))

 

$HOGE=(a b c)
$echo ${HOGE[@]}      #要素を指定するときは中括弧で囲む
a b c             #[@]で全ての要素が表示される
$echo $HOGE          
a              #要素を指定していないので最初の要素が表示される
$echo ${HOGE[2]}
b              #2番目の要素を表示

数字/文字以外も代入してみたい・・・

$date             #時刻を表示するコマンド
2010年 12月16日 木曜日 06時00分06秒 JST
$FOO=(`date`)       #コマンドの出力結果を配列に代入
$echo ${FOO[@]}
2010年 12月16日 木曜日 06時00分06秒 JST
$echo ${FOO[2]}      #部分的に取り出すことも可能
木曜日

配列の要素はoから始まることに注意
コマンドの出力結果を使いたいときは、バッククォートで囲む

 

以上の機能を研究の解析作業に生かせないかと考える・・・

$HOGE=(`ls *.dat`)     #ほげにディレクトリのdatファイルだけを代入
$for i in ${HOGE[@]} 
>do
> plot $i
>done

plotというコマンドでグラフを書かせる
(plotはgnuplotにグラフを書かせるために自分で作ったコマンドです)
これで一気にグラフを書いたり、fittingとかの作業は簡単にできそう

うーん
どこかで役に立つだろうか。