Shammer's Philosophy

My private adversaria

ShellScript

Bash Shell Script my pocket reference - 20100812

if 文 sample if [ $# -ne 1 ];then echo "Usage: $0 [123]"; exit 1; fi if [ $1 -eq 1 ];then echo "You are number#1."; elif [ $1 -eq 2 ];then echo "You are number#2."; elif [ $1 -eq 3 ];then echo "You are number#3."; else echo "Invalid argume…

ShellScript条件分岐ーif文

書こうとするたびにどこかのサイトで検索することになっているので自分用にメモ。 #!/bin/bash echo "IF example!"; if [ $# -ne 1 ];then echo "Usage: $0 [123]"; exit 1; fi if [ $1 -eq 1 ];then echo "You are number#1."; elif [ $1 -eq 2 ];then echo…

Shellで繰り返し回数を指定する

いくつか方法はあるかもしれないが、以下のようにすればできることがわかった。while で無限ループ+breakというような書き方はしたくないが、忘れそうなのでメモ。 for i in `seq 1 5` do echo $i done一行で書く場合はこんな感じ。 for i in `seq 1 5`;do …

Shell で引数の数を判定する

$# という変数(?)に渡された引数の数が入っているようだ。これと if 文というか test 関数を使用して引数不足とか判定できる。 if [ $# -ne 2 ];then echo "Usage: $0 $ARG1 $ARG2"; exit 1 fiこれは引数2つを想定している例。スクリプトの最初に書いて…

Shell でファイルの存在を判定する

デフォルトの .profile には、以下のようなコードが書かれていることが多い。 if [ -f ~/.bashrc ]; then . ~/.bashrc fiてっきり、この意味は「~/.bashrc というファイルがあれば、それを実行する」という趣旨だと思っていたが、~/bin というディレクトリを…

連番ファイルを作成するシェルスクリプト

exprの使い方を把握し、連番ファイルを作成するシェルスクリプトを書いてみました。ファイル数が10個程度なら手動でいいか、という気持ちにもなるかもしれないけれども、連番の数が1000とかになるような場合は、手作業でやるのは億劫でしょうがない。…

exprコマンド

シェルスクリプトを書くときは、常に/bin/sh用に書くようにしている。今となってはもうこのシェルはかなり原始的で、これを使うとやりにくい処理もあるが、昔はどのUNIXでも絶対に使用できるのはこのシェルだったので、移植性を考えてこのシェルで書くように…

test コマンドでファイルの有無を判定

サンプルのファイル名を変えた場合に、古いファイルがそのまま残ってしまう。 自分で rm コマンドを使って消せばいいのだが、せっかくスクリプトを用意したのだから その中でやらせることに。 ファイルの有無を判定するための方法、いろいろあるが test コマ…

sed コマンドで文字列編集

やっぱりコンパイルされてできあがるファイルの名前を"連番.bin"でなく、 "ファイル名.bin"にしたい、という気持ちからそれをするためのシェルを引き続き作成。 すでに配列の中にファイル名.cという名前が格納済みだからそれを利用する。 一番後ろの.cのみ取…

B shell で複数のファイルを配列として扱う

この@ITのサイト、 http://www.atmarkit.co.jp/flinux/rensai/shell05/parameter.html にいくつか方法が出ている。 直接的にやりたいことは出ていなかった。 どうにかしてこのパターンまで自分で考える必要がある。 一番簡単なのは ls *.c の結果をコマンド…

シェルで文字列を連結する

作成したシェルスクリプトが原始的すぎて更新が面倒・・・ ということで、やっぱり少し改良を試みる。 基本的に、cc でコンパイルすると -o オプションをつけない限りは すべて同じ名前のバイナリファイルにコンパイルされてしまう。 そのため、ソースごとに…

コンパイル用シェルスクリプト

サンプルとはいえ、プログラムをたくさん書いているとそれなりに数が増えてくる。 最初は、Makeファイルを作って M-x compile と実行していたが、なんか Make ファイルの書き換えが面倒になってきた。 そもそも、 ・自分がほとんど Make を知らない ・Make …