タグ

シェルスクリプトに関するtmsanrinshaのブックマーク (11)

  • 位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog

    位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog Shell Script Advent Calendar 2016 の 15日目の記事です。 位置パラメーター (Positional Parameters) の紹介と、 その値をすべて展開する $*, $@, "$*", "$@" の違いについて解説します。 $*, $@, "$*", "$@" の違いを認識し使い分けできるかどうかは、 シェルをちゃんと理解しているかどうかの指標の一つと言えるのではないかと思います。 残念ながら、適切な位置パラメーター展開を用いていないシェルスクリプトが珍しくありません。 あなたのシェルスクリプトは大丈夫ですか? あなたの好きな◯◯のソースコードや配布物に付属のシェルスクリプトも要チ

  • 引数を処理する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    引数を処理する 引数とは? 引数 (ひきすう) とはコマンド (シェルスクリプト) 実行時に、コマンドラインから渡される値のことである。 引数は実行時にプログラム内で参照され、シェルスクリプトの実行結果 (動作) に影響を与える。引数はパラメータと呼ばれることもある。 → コマンド名に続けて引数としてコマンドに渡したい値のリストを指定する。 引数はコマンド名に続けてスペース区切りで指定する。引数として指定可能な値の数は各コマンドにより異なる。 【参考】 引数とオプション コマンド実行時に指定する値には引数とオプションがある。引数は実行に使用されるファイル名や出力されるメッセージなどを指定するのに使用される。 一方、オプションは -f などのように - (ハイフン) とアルファベット1文字で表記され、主にコマンドの振る舞い方を指定する目的で使用されるものである。 また、オプションは -a -

    引数を処理する | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • シェルでバックグラウンドで起動したプロセスの戻り値を取得するには - まじかんと雑記

    Bashでバックグラウンドで起動したアプリの戻り値の取得 - Linux Square 検索すればすぐ見つかるんじゃないのかと思ったが意外にも出てこない。あまり知られていない機能なので仕方がないかも。 で、どうやればよいかというと、こうする。 foo 1 & foo1pid=$! foo 2 & foo2pid=$! foo 3 & foo3pid=$! wait $foo1pid echo $? wait $foo2pid echo $? wait $foo3pid echo $? 変数 $! には最後に起動した非同期リスト (バックグラウンドプロセス) のプロセス ID が入っている。これは別の非同期リストを起動すると上書きされてしまうので、非同期リストを一つ起動するたびに個別の変数に保存しておく。 非同期リストの終了ステータス (戻り値) を得るには、保存しておいたプロセス ID を

    シェルでバックグラウンドで起動したプロセスの戻り値を取得するには - まじかんと雑記
  • シェルスクリプトで作る簡単なログ監視スクリプト

    シェルスクリプトでログ監視 いろんなサイトでログ監視スクリプトの紹介がありますが、どれもこれもswatchを使った物ばかりです。 個人的にはインスコするのが面倒くさいので、スクリプトを書いてしまいます。 このスクリプトは、こんな人にお勧めです。 swatchを使うほどの事じゃない ログのローテートにも対応したい grepを使うのが大好きだ multilogなログを簡単に監視したい それでスクリプトを次に書いときます。 適宜自分の環境に直してください。 このスクリプトは正直、動作が遅いです。 検索〜メールをあげる部分のロジックはrubyとかで書いた方が、grepを毎回起動するよりも早いと思われます。 実際のスクリプト 環境変数の設定 LOGPATHにLOGが設置されているディレクトリを設定 FILEに実際のログファイルを設定(syslogの場合messageとか) PATTERNに

  • シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)

    シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)

    プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや

    シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)
  • シェルプログラミングTips - UEC - usp engineers' community

    UEC - UNIXを深く理解し、シェルプログラミングを極めるコミュニティサイト Info インフォメーション イベント情報 / ニュース・プレスリリース ユニケージについて ユニケージ開発手法とは / ユニケージエンジニアとは ユニケージ開発手法 技能検定 / 試験日程 ユニケージ開発手法 教育講座 / 開講日程 ユニケージ開発手法 教育講座レポート 出版物 シェルスクリプトマガジン / 注文 / 取扱書店 / 問合せ USP出版書籍 / 注文 / 取扱書店 / 問合せ Software Design / FreeBSD Expert FreeBSD Weekly Topics / 日経Linux 推薦図書 オススメの定番書 / より上級者を目指す UNIXビギナー向け教 / UNIXの文化を知る AWK/SEDを習得する / 手元に置きたい実用書 古典を楽しむ UECサイトについて

  • MySQLとシェルスクリプト – OpenGroove

    MySQLSQL文を、OSのコマンドラインまたはシェルスクリプトから実行したい時の例を、いくつか。 まずコマンドラインからサクッと実行するには、-eオプションを利用。 $ mysql -u user_name -pxxxxxx -e “SQL文” 「;」で区切れば複数のSQL文発行も可能。 $ mysql -u user_name -pxxxxxx -e “SQL文;SQL文;SQL文” 以下の方式でも可。 $ echo “SQL文;” | mysql -u user_name -pxxxxxx これらのコマンドラインをそのままシェルスクリプトに書いてもいいわけだ。 次にSQL文をファイルに記述しておいて読み込ませる方法。 “file_name”にはSQL文が記述されているものとする。 $ mysql -u user_name -pxxxxxx < file_name 上記はSQL文にお

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • シェルスクリプトからsshでリモートコマンドを実行する際の注意点 - 矢野勉のはてな日記

    メモ, プログラミングシェルスクリプトからsshで複数のリモートホストにコマンドを投げつける処理を書いてて、いろいろ気がついたことを、あとで自分で調べられるようにメモしておく。 ループからsshでコマンドを投げつけるシェルスクリプトのwhileループ内から、複数のホストへ順番にコマンドを投げつける処理をかいていると、最初のホストにしかコマンドが飛ばない(ループしない)これは、シェルスクリプトのwhileループ自体が、標準入力の読み取りに依存しているのに、sshも標準入力を読み取るのが原因。たとえばこんなループの場合に起きる。 somecommand | while read LINE do ssh user@hostname 'sh yourcommand /dev/null 2>&1 &' done nオプションを付けることで、sshの標準入力が/dev/nullに変わりバックグラウンド

  • 1