「シェル(shell)」カテゴリーアーカイブ

シェル IF文比較いろいろ

便利だけどなかなか覚えられないシェルのIF文比較いろいろ

 

シェル ファイルを一行ずつ処理をする

シェルスクリプトでファイルを読み込み一行ずつ処理をするサンプルシェルスクリプト。

 

ファイルを一行ずつ処理をしながら、キー入力も受け付けるサンプルシェルスクリプト。

 

 

シェル 文字列に含まれる連続する空白文字の扱い

文字列に含まれる連続する空白文字を一つにまとめたり、そのまま維持したりする方法

変数名のみで出力すると、連続した空白文字が1つにまとめられます。

変数名をダブルクオートで括ると連続した空白文字がそのままの維持されます。

 

シェル getoptsでオプションの取得

シェルスクリプトへのオプションやオプションの値を取得します。

例)./hoge.sh -a -b value param

上記スクリプト実行時の -a -b value param の部分をhoge.sh内で捉えます。

-a は値なしのオプション。

-b は値有りのオプション。
値としてvalueを持ちます。

paramはシェルスクリプトへのパラメータ(引数)。

以下は hoge.sh の内容。(このソースを丸覚えしておくと良いかもしれません。)

getopts ab: の部分がこのスクリプトが受け入れるオプションの指定。

ab: の意味は、-a -b value を受け入れるということです。

abがそのまま -a -b に対応しています。

値ありオプションの場合は「:」(コロン)を指定します。

getopts a:b: とした場合は -a a_value -b b_value を受け入れるということです。

このスクリプトを実行すると以下のようになります。

スクリプト最後の方の

は位置パラメータを正しく取得するためのお決まりの記述と思ってください。

後はなれるためにサンプルプログラムをいろいろ変えて動作を確かめてください。

動かしているうちにイメージがつかめると思います。

シェル ファイルディスクリプタ 「2>&1」

普段何気に利用しているリダイレクションにはファイルディスクリプタ番号が隠れています。

例えば(hogeファイルは存在するものとします。)

cat hogeの標準出力をfileへ書き出すというコマンド。

実は上記書き方はファイルディスクリプタ番号が省略されていて

ディスクリプタ番号付きで書くと

となります。

動作的には、cat hoge > fileと同じです。

ファイルディスクリプタ番号の意味は以下のとおり。

ファイルディスクリプタ 意味
0 標準入力
1 標準出力
2 標準エラー

これらを活用すると、

標準エラーのみファイルに書き出すとか、

標準出力と標準エラーを同一ファイルに書き出すといった事ができます。

標準エラーのみファイルに書き出すには、

hogeファイルの内容は画面(標準出力)に出力されますが、

hogehogeファイルは存在しないためエラーの旨がfileに書き出されます。

標準出力と標準エラーを同一ファイルに書き出すには、

上記2つのコマンドはどちらも同じ動作をします。

ファイルディスクリプタ番号が省略されているか否かの違いです。

hogeファイルの内容はfileに書き出されます。

hogehogeファイルは存在しないためエラーの旨がfileに書き出されます。

よく見かけると思いますが、

2>&1

は、ファイルディスクリプタ2番を1番にまとめるという意味。

つまり標準エラー標準出力にまとめるということです。

これらのコマンドを実際に打って

画面表示(標準出力)とfileの内容を確認するとすぐ理解できると思います。

CentOSへのOpen usp tukubaiインストール

環境
CentOS7

なにやら面白そうなものを見つけたのでとりあえずインストール。

USP研究所が開発しているコマンド群「Open usp tukubai」。

Open usp tukubaiはフリー版でPython製。
(商用版usp tukubaiはC言語製で高速動作する様です。)

このフリー版は商用版で特に使用頻度の高いコマンドのみ利用可能とのこと。

それでは早速、

Open usp tukubaiを取得する。

tarで展開しインストール

インストール完了。

動作確認。

以上でOpen usp tukubaiコマンドが利用できるようになります。

シェルでの四則演算(expr、bcコマンド利用)

exprコマンドでの四則演算。

上から足し算、引き算、掛け算、割り算、括弧つき演算。

掛け算の*演算子にはバックスラッシュが必要なので注意。

括弧の前にもバックスラッシュが必要なので注意。

 

exprコマンドのシェルスクリプトでの使用例

exprコマンドは整数の演算しかできないので、少数を含む計算をしたい場合はbcコマンドを利用する。

bcコマンドの利用例。

 

bcコマンドのシェルスクリプトでの使用例