改行コードはUNIX(LF)にする
拡張子は.sh
ファイルの先頭に#!/bin/shを書く
コメントは#で行末まで
./sample.sh
権限が必要と出た時は sh ./sample.sh
処理を並べる
./a.exe 1
./a.exe 2
./a.exe 3
代入 a=1
参照 b=$a
文字列 echo "hello world"
値 echo "a=$a"
足し算 expr 1 + 1
引き算 expr 1 - 1
掛け算 expr 1 \* 1
割り算 expr 1 \/ 1
注意:値と演算子の間に半角スペースが必要
掛け算、割り算は小数切り捨て
値に代入するときは`(shift+@)で囲む a=`expr 1 + 1`
for i in $(seq 0 10)
do
echo "i=$i"
done
例えばこんな並列計算をする
for i in `seq 1 10`
do
poisson.exe $i &
done
&がついてるのはバックグランドジョブにして同時に計算させてる(マルチコアCPUだから)
んで計算中にゲームがしたくなったときは、これらを一時停止させたい
ps
って打つとプロセス一覧が出る。実はさっきのforで回したプロセスは全部同じPGIDを持っている
だからこんなことができる
一時停止
kill -stop `ps | grep PGID | cut -d " " -f 6`
再開
kill -cont `ps | grep PGID | cut -d " " -f 5`
終了
kill `ps | grep PGID | cut -d " " -f 6`
親プロセスと子プロセスを管理するのは面倒だからこれでいい。
(コマンドはcygwin用)
gnuplotでplotするときにデータの行と列を入れ替えたい
元データの改行コードはLF(UNIX)にしておく
やり方はcutで1列ずつ抜き出して
paste -s で行にして、結合させる
#!/bin/sh
in=$1
n=$2
out=$3
rm -f $out
for i in `seq 1 $n`
do
cut -f $i $in | paste -s >> $out
done
これで動く。nは元データの列数
最終更新:2011年12月31日 19:39