[[
shell_script
]]
Applied Mechanics Lab. WIKI
トレース:
文書の表示
以前のリビジョン
最近の変更
サイトマップ
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
シェルはたまにしか使わないので、すぐ忘れてしまう。ので、ここにメモすることにする。スクリプトと言うよりも、Unixコマンドの使い方のようなものも、ついでにここにメモすることにする。 ====== スクリプトを保存する時,自動的に chmod +x を行う ====== .emacs に以下を記述するとファイルの先頭に#!が含まれているとき、自動的に chmod +x を行ってくれる。 <code emacs> (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) </code> ====== シェルからgnuplotで図を作成(epsやpsなどにする) ===== たくさん図を作るときなどに。 <code bash> make && ./a.out gnuplot <<EOF set term post eps set out "hoge.eps" plot 'fort.88' EOF </code> ====== シェルからgnuplotで図を作成(Xで表示) ===== 以下のdo.shとplot.gpを用意すると、./do.shとやるだけで、数値解と解析解を比べてくれる。 <code bash> #do.shの中身 make && ./a.out ./plot.gp </code> <code gnuplot> #plot.gpの中身 #!/thin/local/bin/gnuplot -persist plot 'suuchikai.dat','kaisekikai.dat' </code> -persistとやると、Xの画面が勝手に消えなくなる。 #!/thin/local/bin/gnuplotの部分は各自のgnuplotが置いてある場所を指定すること。 <code bash> which gnuplot </code> とやって出てきたものを書き込めばよろしい。 バグ取り時に大活躍(のはず)。 ただし、スクリプトが二つのファイルになってしまう。 もっとsmartなやり方があるのかもしれない。FIXME ====== readする値をshellで食わす ===== * fortranなんかのread文に値を食わせるときに使うshell. * ファイルを作ってリダイレクトするのが面倒なときに. * 変数1つの場合 <code bash> echo 5 | ./a.out </code> * 変数が2つ以上 <code bash> echo "5\n6" | ./a.out </code> あるいは <code bash> ./a.out << EOF 5 6 EOF </code> ====== 文字を置換する(sed) ====== inputの中のすべてのappleをorangeに置換して、outputに放り込む。 <code bash> sed -e 's/apple/orange/g' input > output </code> ====== シェルで実数計算 ====== bcと、scaleを使う。scaleには欲しい桁数を入力する。 `は'ではないので注意が必要. <code bash> sq3=`echo "scale=17; sqrt(3)" |bc` a=`echo "scale=17; $sq3/10.0" |bc` </code> bcについて補足. -lオプションで20桁まで計算+関数の使用が可能になる. <code bash> echo "e(1)" | bc -l </code> e(x)はexp(1)のこと. ====== data file から必要な列だけを取り出す ====== awkを使う。n列目とm列目が欲しいなら、 <code bash> awk '{print $n,$m}' hoge.dat </code> ====== 0.1刻みで変数iを増加させながら何か実行 ====== <code fortran> do i=1,100 di=1.d-1*dble(i) write(*,*) di 何か作業 enddo </code> のようなことをやりたければ、 <code bash> i=1 while [ `echo "$i <= 10" |bc` -eq 1 ] do echo $i 何かコマンド i=`echo "$i + 0.1" |bc` done </code> とすればよい。 ====== 1刻みで変数aを増加させながら何か実行 ====== aを0から99まで動かすとき、 <code bash> a=0 while test $a -ne 100 do echo $a 何か実行 a=`expr $a + 1` done </code>
shell_script.1250862362.txt.gz
· 最終更新: 2009/08/21 22:46 by
118.16.150.138
文書の表示
以前のリビジョン
[unknown link type]
文書の先頭へ