エンジニアパパと4歳の娘で2024年に作ったもの 娘も4歳となり、何かを親が作る、というより「親と一緒に作る」ことが増えてきました。 今年も細かいモノづくりをたくさんおこなったので。年末ということで一気にまとめて紹介してみようと思います。 この記事は子育てエンジニア Advent Calendar 2024の12/07の記事で…

I have an expect script which I need to run every 3 mins on my management node to collect tx/rx values for each port attached to DCX Brocade SAN Switch using the command #portperfshow# Each time I try to use crontab to execute the script every 3 mins, the script does not work! My expect script starts with #!/usr/bin/expect -f and I am calling the script using the following syntax under cron: 3 * *
前回に引き続き、今回もOS付属のシェルスクリプトを読んでいく。「本当にこれでいいのか?」と思うような読みにくい記述も見つかるが、よく読むとシェルスクリプトならではの流儀を学ぶことができる(編集部) とにかく何か作ってみろ シェルスクリプトはお世辞にも読みやすいプログラミング言語とは言えない。ほかの言語にはない特有のルールがあるので、あまり経験がない人がちょっと複雑なシェルスクリプトを読むと嫌になってしまうかもしれない。 その半面、シェルスクリプトにはちょっと書いてすぐに試せるという良い点がある。シェルスクリプトの解説書やソースコードを読みながら「なんだかよく分からない」「マニュアルを読んでもよく分からない」という人には、短くてもいいからとにかく何かシェルスクリプトを書いて、試してみることを強くお勧めする。 これはどんなプログラミング言語にも言えることだが、習得しようと思っても、解説書を読ん
スマートな紳士のためのシェルスクリプト(2):同名コマンドのファイルがなぜ多数存在するのか? (1/2) 今回のテーマはごく短いシェルスクリプトだ。「このスクリプトにどんな意味があるのだろう」とか、「役に立つのだろうか」と思う方もいるかもしれない。あなたが作成するシェルスクリプトに直接役立つことはないが、今回のテーマは、今後シェルスクリプトのスキルを上げていきたいと願う人なら、絶対に押さえておきたいものだ。(編集部) /usr/bin/cdをよく読んでみろ 今回は、最初に短いシェルスクリプトを紹介する。このごく短いシェルスクリプトが今回のテーマだ。わけが分からないという人もいるかもしれないが、この部分をしっかり押さえた人と、わけが分からないからと放置した人とでは、後々とてつもなく大きな差が付く。 今回のテーマは、シェルスクリプトマスターになるためには、ぜひとも抑えておきたいポイントなのだ。
→ 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す
終了ステータス 終了ステータスとは? コマンド終了時には「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。 各コマンドにより異なるが、一般的には、 コマンド成功時には「0」 失敗時には「1」(コマンドやエラーの種類によっては 0 以外) が設定される。 → 直前に実行したコマンドの成否は、特殊変数 $? に設定されている値で確認する。 終了ステータスを設定 シェルスクリプトでは exit コマンドに指定したパラメータ (0 もしくは 1 ~ 255 の正の整数値のみ可) が、そのシェルの終了ステータスとなる。シェルスクリプトにおいても正常終了時は exit 0 で、異常終了時には exit 1 で終了するようにするのが慣例である。 関数も同様に return コマンドに指定したパラメータが終了ステータスとなる。 → シェル
ちょっとシェルスクリプトを書く機会があったので、ユニットテストできるかなーと思って調べてみたのでメモ。 こんなんがあった。 Google Code Archive - Long-term storage for Google Code Project Hosting. ダウンロードして解凍 $ wget http://shunit2.googlecode.com/files/shunit2-2.1.5.tgz $ tar zxvf shunit2-2.1.5.tgz サンプル実行 $ cd shunit2-2.1.5 $ ls Makefile doc lib src bin examples share $ cd examples/ $ ls equality_test.sh math.inc mkdir_test.sh lineno_test.sh math_test.sh party
モダンとまではいかなくてもシェルスクリプトの開発環境ってみんなどうしてるのかなあと思う今日この頃。 今はHiveでデータをうごうごいじったりするのにシェルスクリプト使っているんだけどなんだかスクリプト地獄になってきている気がするんだよなあ。 前の現場でもスクリプト書いたので開発環境周りを書いてみたいと思います。 その前にありがちな状況としては、 1. サーバー上で直接ソース編集 ローカルはWindowsだしねー 2. バージョン管理無し ファイル、フォルダ名に日付つけて管理 3. 自動テスト無し 軽く動作確認すればOKでしょ 4. CI無し ナニそれおいしいの あたりでしょうか。10年前のWebアプリ開発みたいですねw まあシェルスクリプトって割と書き捨てだし、環境依存多いし、小物系だから、一人でちょちょっとやる分には上記でもそんなに問題無かったりします。 とはいえ複数人で作業する場合とか
以前シェルスクリプトのテストについて少し書きました。 シェルスクリプトの開発環境 - wyukawa’s blog 最近実際にテストを始めたのでどうやっているかを書いてみたいと思います。 やりたいことはHiveQLをキックするシェルスクリプトのテストです。 ブラックボックステストでテストの粒度はSIerでいう?単体をイメージしてます。 1ファイルのシェルスクリプトをテストするシェルスクリプトは1ファイルでその中にテストメソッドが観点ごとに複数存在するイメージです。 またブラックボックステストなのでシェルスクリプト内の分岐を網羅するようなテストは想定していません。もっと粒度は大きいです。そうじゃないとメンテナンス大変だし。 テスティングフレームワークはshunit2を使います。 テストコードのディレクトリ構成はこんな感じです。テストケースごとにテストデータ、テスト結果置き場、期待値データがあ
他の人がzshを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のzshのおすすめ設定をここに記しておきます。 もし、Emacsも使っている場合はおすすめEmacs設定もどうぞ。 ディレクトリ構成 長年漬け込んできたzshの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。主に、zsh標準機能の設定と追加パッケージの設定を分けるためにこうしています。 ~ ├── .zshrc # シェルを起動する毎に読み込まれる。 │ # ~/.zsh.d/zshrcを読み込んで │ # 標準機能の追加設定を行う。 ├── .zshenv # ログイン時に一度だけ読み込まれる。 │ # ~/.zsh.d/zshenvを読み込ん
このウェブサイトは販売用です! hansode.org は、あなたがお探しの情報の全ての最新かつ最適なソースです。一般トピックからここから検索できる内容は、hansode.orgが全てとなります。あなたがお探しの内容が見つかることを願っています!
主にunix系での話になりますが ・ハイフン一つ argとして1文字ずつが意味を持つ→複数同時指定可能 valueは空白で区切って指定 +argでオプションをoffの意味になる ・ハイフン二つ argは単語、または単語をハイフンで区切ったもの valueは--arg=valueという感じで=で指定 --no-argでオプションをoffの意味になる というのが多いです。 例えば gnu lsだと -r/--reverseで逆順 -R/--recursiveで再帰的にサブディレクトリを表示 -s/--sizeでファイルサイズの表示 となりますが ls -srR と ls --size --reverse --recursive が同じ意味になります。 ただ、全てそうだというわけではなく ・ハイフン一つで複数指定不可 ・ハイフン一つで単語指定のみ ・ハイフン二つ指定が無い ・一文字オプションで小
今回はシェルとコマンドについてのお話です。前回パスのお話をしましたが、もう1つコマンド実行を考える際に重要な要素があります。それがシェルです。シェルはコマンドを実行するソフトウェアでもあり、LinuxのCUIの実態でもあります。コマンド実行はこのシェルを介して行い、Linuxを操作する上においてシェルは必要不可欠な存在だといえます。シェルは基本的にコマンドを実行に必要な機能を提供するものですが、現在のシェルには様々な機能がついており、それ単体が非常に高機能なソフトウェアである場合もあります。ここでは基本としてコマンドを実行することにフォーカスしてシェルの役割やコマンド実行に必要なシェルの知識についてお話します。 第四回の「LinuxとH/W」の回でOSの役割の1つにH/Wの抽象化があるというお話をしました。このOSの機能によりH/Wを有効活用することができます。しかし実際にOSの機能を利用
Shell(親)ではShell(子)を呼び出しています。 Shell(子)では環境変数を設定しており、設定直後にechoすると設定した環境変数の内容が出力されます。 ですが、Shell(子)からShell(親)に戻った直後にShell(子)で設定した環境変数をechoすると、値が空になっています。 なんで空になるのかわかりません。 お手数かけますが、ご教授おねがいします。 <Shell(親)の内容> ./Shell(子) echo "TESTDIR(親):$TESTDIR" <Shell(子)の内容> TESTDIR=/dev/fs/test export TESTDIR echo "TESTDIR(子):$TESTDIR" <Shell(親)の実行結果> TESTDIR01:/dev/fs/test TESTDIR02: ←空白 ※環境 OS:Windows 2003 Server Sh
自分自身の知識を整理するため、リダイレクトとパイプの考え方を図示してみました。記事は3回に分ける予定です。 前回: - 次回: id:simply-k:20100801:1280617927 はじめに Unix/LinuxのシェルスクリプトやWindowsのコマンドプロンプトで使用するリダイレクトとパイプについて、考え方を図示しました。リダイレクトの表記法は、sh/bashやコマンドプロンプトを前提にしています。 リダイレクトやパイプについての初歩的な説明は省いていますので、そのような説明がほしい方は、他のサイトや書籍を参照してください。 (1) コマンド リダイレクトやパイプを使用しないコマンド実行です。 図の中の矢印は、ストリーム(データの流れ)を示しています。標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)が、自動的にオープンされます。それぞれ、データ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く