以前のリビジョンの文書です
シェルはたまにしか使わないので、すぐ忘れてしまう。ので、ここにメモすることにする。スクリプトと言うよりも、Unixコマンドの使い方のようなものも、ついでにここにメモすることにする。
.emacs に以下を記述するとファイルの先頭に#!が含まれているとき、自動的に chmod +x を行ってくれる。
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
たくさん図を作るときなどに。
make && ./a.out gnuplot <<EOF set term post eps set out "hoge.eps" plot 'fort.88' EOF
以下のdo.shとplot.gpを用意すると、./do.shとやるだけで、数値解と解析解を比べてくれる。
#do.shの中身 make && ./a.out ./plot.gp
#plot.gpの中身 #!/thin/local/bin/gnuplot -persist plot 'suuchikai.dat','kaisekikai.dat'
-persistとやると、Xの画面が勝手に消えなくなる。 #!/thin/local/bin/gnuplotの部分は各自のgnuplotが置いてある場所を指定すること。
which gnuplot
とやって出てきたものを書き込めばよろしい。
バグ取り時に大活躍(のはず)。
ただし、スクリプトが二つのファイルになってしまう。
もっとsmartなやり方があるのかもしれない。
gnuplotのパスに依存しないやり方はこんな感じかしら.
#!/bin/sh make && ./a.out gnuplot -persist plot.gp
* 追記 次のようにやると、do.shのみでおk
#!/bin/sh make && ./a.out gnuplot -persist <<EOF plot 'suuchikai','kaisekikai' EOF
echo 5 | ./a.out
echo "5\n6" | ./a.out
あるいは
./a.out << EOF 5 6 EOF
inputの中のすべてのappleをorangeに置換して、outputに放り込む。
sed -e 's/apple/orange/g' input > output
bcと、scaleを使う。scaleには欲しい桁数を入力する。 `は'ではないので注意が必要.
sq3=`echo "scale=17; sqrt(3)" |bc` a=`echo "scale=17; $sq3/10.0" |bc`
bcについて補足. -lオプションで20桁まで計算+関数の使用が可能になる.
echo "e(1)" | bc -l
e(x)はexp(1)のこと.
awkを使う。n列目とm列目が欲しいなら、
awk '{print $n,$m}' hoge.dat
do i=1,100 di=1.d-1*dble(i) write(*,*) di 何か作業 enddo
のようなことをやりたければ、
i=1 while [ `echo "$i <= 10" |bc` -eq 1 ] do echo $i 何かコマンド i=`echo "$i + 0.1" |bc` done
とすればよい。
aを0から99まで動かすとき、
a=0 while test $a -ne 100 do echo $a 何か実行 a=`expr $a + 1` done