シェルスクリプトは長くなると処理の境界が不鮮明になりがち。 コメントで処理の境界を表現する工夫はよく見かけるが、もっと良い方法はないか考えてみた。 :コマンド、&&演算子、複合コマンド()や{}を組み合わせて書くと、処理の境界線がはっきりする。

#!/bin/bash : [DEBUG] set param readonly SCORE_ARRAY=(100 90 80 70) readonly COUNTS=${#SCORE_ARRAY[@]} function cal_score_ave() { local _score_sum=i : [DEBUG] cal for _score in ${SCORE_ARRAY[@]} do _score_sum=$((_score_sum + _score)) done score_ave=$((_score_sum / COUNTS)) return 0 } : [DEBUG] main cal_score_ave echo $score_ave echo $param echo "finished" exit 0 # bash -uvx cal_score_ave.sh #!/bin
シェルスクリプトの中で、スペース区切りもしくはタブ区切りのレコードを扱うことがよくあると思います。 たとえば、前回のエントリ「AWS CLIとjqを使って、AWSのELBボリュームがアタッチされているEC2インスタンス名を出力するワンライナーを書いた - 双六工場日誌」のスクリプトの出力は以下のようになります。 i-ec56a9f5 vol-07d00601 servername i-ec56a9f5 vol-8f550991 servername このようなレコードの特定の列を取り出して、処理する際にどうするのが効率的か、というのがこのエントリのお題です。 非常に古い話題なので、昔からシェルスクリプトを書いている人には自明な話ではありますが、最近、シェルの標準機能の話を聞く機会がなく、失われつつある技術になってきている気がしているので、改めて確認ということで。 例として挙げたレコードから
1. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 1 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 jus 勉強会 シェルスクリプトワークショップ 「シェル芸」を極める 日本 GNU AWK ユーザー会 斉藤 博文 2. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 2 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 はじめに 3. 自己紹介 「日本 GNU AWK ユーザー会」会長 http://gauc.no-ip.org/awk-users-jp/ hi_saito@yk.rim.or.jp @hi_
3. 仕事で使えるシェルスクリプト 3 POSIXPOSIX についてについて ● POSIX とは – Portable Operating System Interface – 各種 UNIX OS を始めとする異なる OS 実装に共通の API を定め、移植性の高いアプリケーションソフト ウェアの開発を容易にすることを目的として IEEE が策定したアプリケーションインタフェース規格 – 名前はリチャード・ストールマン提案による 4. 仕事で使えるシェルスクリプト 4 なぜなぜ POSIXPOSIX かか ● 元々は Bourne Shell のみだったので互換性は問題なし ● シェルスクリプトは様々な環境で動作した ● csh 、 tcsh 、 ksh 、 bash 、 zsh などの登場により機能は増加し たが互換性は減少した ● ソフトウェア製品を様々なベンダーの数ある uni
B! 119 0 0 0 前から気になってた ShellCheck を使ってシェルスクリプトや.bashrc等直してみました。 ShellCheck コマンドライン版 日本語を含んだファイル Vimでは ShellCheck ShellCheck はシェルスクリプトの文法をチェックしてくれるオンラインサービスです。 ShellCheckのページに行って 試したいスクリプトを書き込むと文法をチェックして エラーや注意を表示してくれます。 指摘してくれるものとしては、明らかな文法違反な物は勿論、 実際にスクリプトを回して毎回エラーになるものでなくても、 変数が空の場合に""で囲ってないとエラーになる場合なども チェックしてくれるので思わぬ事故も防いでくれます。 コマンドライン版 ShellCheckのソースコードはGitHubで公開されていて、 さらにコマンドライン版のshellcheckを使
relogin というコマンドで実行できます。 以上!ということで終わりでもいいですが、exec $SHELL -l の意味がよくわからない。。。 シェルの情弱な僕としてはどういう意味なのか気になったのでちょっと調べてみました。 execコマンドについて UNIXの部屋 コマンド検索:exec (*BSD/Linux) にある説明がとてもわかり易かったので引用します。 exec を使った場合と使わない場合の意味が以下のように書かれていました。 exec ls のコマンドをサンプルに解説されています。 exec を使わない場合に関しては以下のとおり書かれています。 システムコール fork(2) を呼び、子プロセスを生成する。 子プロセスは ls を exec(2) する。 親プロセスであるシェルは、ls の実行が完了するのを待つ (wait する)。 そして exec を使った場合は シェ
最新の類似投稿としてシェルスクリプトのコーディングルール2014も併せてどうぞ。 2014/10/09追記 ぼくがシェルスクリプトを書くときに気にしていること、過去の失敗で書き留めたことを忘れないために。 1. グローバル変数は大文字 PATH や HOME など、環境変数が大文字なので、エクスポートする変数を大文字で書くという習慣は一般的であるような気がしますが、エクスポートする変数を抱えるシェルスクリプトを作成する機会が稀なので。 グローバル変数は大文字 ローカル変数は小文字 エクスポートする変数も大文字 関数内からグローバル変数にアクセスする場合がありますが、やはり区別していると、可読性が増すような気がするのでお勧めです。 2. awk を知る Unix 上にて文書処理をするときに、数多くのフィルタコマンド(grep、cut、tr、head、sort、uniq、sed、awk、wc、
Index データ集計コマンド 爆速で検索したいぜ! lookを使う LC_ALL=Cを設定する データのランダムサンプリングがしたいぜ! sedを使う awkを使う sortの--random-sortを使う Script言語を使う shufを使う ランダムサンプリング速度比較 合計と平均値を集計したいぜ! 列データ取得 重複行のカウント 合計値出力 平均値出力 複数ファイルのデータ結合がしたいぜ! 共通項目での結合 同じ行数での結合 まとめ データ集計コマンド joinコマンドが便利過ぎて生きるのが辛い - Yuta.Kikuchiの日記 lookコマンドによる二分探索が速すぎて見えない - Yuta.Kikuchiの日記 今日はデータ集計を行う上で絶対に覚えておいた方が良いコマンドと知識を紹介したいと思います。これを身につければシステム処理と業務効率化に大きく繋がると思います。この記
Home»CakePHP»BakerがCakePHPのために.bashrcに設定すべき5行 (CakePHP Advent Calendar 2010 17日目) こんにちは、nojimageです。aerithさんからバトンを受けての CakePHP Advent Calendar 2010 17日目です。今日もユルユルな感じでいきましょう。はい。 今日のtipsは、Linux/Macを開発環境で使っている方向けのシェル環境設定のお話です。 (Windowsの人はゴメンナサイ。 CAKE_CONSOLE=/path_to_cakephp_root/cake/console PATH=$CAKE_CONSOLE:$PATH alias cake='cake/console/cake' alias bake='cake bake' alias cake-cc="find ./app/tmp/c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く