シェルスクリプトメモ

Under construction!!

UNIXのコマンドをまとめて実行したり、ファイルを読み込んだり、ループを作ったり出来る。結構色んな事が出来る。


  • 実行方法
「chmod u+x hoge.sh」などで実行許可を与えた上で、「./hoge.sh」ファイルの1行目に「#!/bin/bash」と書いておく。
  • forループ
i=0,5,10,15,20を出力for i in `seq 0 5 20`do echo "${i}" done
KAZU=0for i in **hoge.epsdocp ${i} ${KAZU}-${i}KAZU=`expr ${KAZU} + 1` ##整数足し算done


  • ファイル読み込み
例: 1行にデータが並んでいるファイルwhile read LINE1doecho "${LINE1}"done < datafilename.txt
例: 複数行にデータが並んでいるファイルwhile read FILEdoLINE1=`echo ${FILE} |cut -d " " -f1 `LINE2=`echo ${FILE} |cut -d " " -f2 `LINE3=`echo ${FILE} |cut -d " " -f3 `echo "${LINE1}"echo "${LINE2}"echo "${LINE3}"done < datafilename.txt


  • gnuplot
・plotの所でusingの後に計算させる時は、「\」をつける。 「echo "plot '**.dat' u 1:((\$2)/a)" > hoge.gp」


  • if文
if test 条件1 ; then 処理1elif test 条件2 ; then 処理2else 処理3fi
###条件式の所は、○数式比較・「test num1 -eq num2」1=2?・「test num1 -ne num2」1≠2?・「test num1 -lt num2」1<2?・「test num1 -le num2」1≦2?・「test num1 -gt num2」1>2?・「test num1 -ge num2」1≧2?
○文字列比較・「test 文字列1 = 文字列2」等しいか?・「test 文字列1 != 文字列2」等しくないか?○論理結合・「! 条件」条件が偽であれば真・「条件1 -a 条件2」条件1が真、かつ、条件2が真であれば真・「条件1 -o 条件2」条件1が真、または、条件2が真であれば真


  • 演算
整数演算・a=`expr 5 + 3` 和・a=`expr 5 - 3` 差・a=`expr 5 \* 3` 積・a=`expr 5 / 3` 商・a=`expr 5 % 3` 剰余
・出力echo "a=$a"
実数演算・例:3.5*2.3を計算して変数xに代入。 set x = `echo "3.5 * 2.3" | bc -l`
・例:if文。aがbより大きければ.... x=`echo "$a > $b" | bc` if [ $x -eq 1 ]; then ..... fi
・例:if文。1.00< a <2.00ならば.... if test "$(echo "${a} > 1.00" |bc )" -eq 1 -a "$(echo "${a} < 2.00" |bc )" -eq 1 ; then ..... fi