You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
I set variables in a loop that's in a pipeline. Why do they disappear after the loop terminates? Or, why can't I pipe data to read? In most shells, each command of a pipeline is executed in a separate SubShell. Non-working example: # Works only in ksh88/ksh93, or zsh or bash 4.2 with lastpipe enabled # In other shells, this will print 0 linecount=0 printf '%s\n' foo bar | while IFS= read -r line d
B! 19 0 0 0 シェルスクリプトで関数を定義する時、functionと付けても付けなくても 定義出来たりしますが、 その辺のしっかりとした定義について。 function foo or foo () foo () any-command foo () any-compound-command function foo { …; } function foo () { …; } function foo () other-compound-command まとめ function foo or foo () Bashなどのシェルスクリプトで関数を定義するには function foo { ... } の様にfunctionを前に付けて定義するか foo () { ... } の様にfunctionを使わずに後ろに()を付けて定義するのが通常です。 今まで作ってるスクリプト(Bash)
シェルスクリプトは、Unix 系環境で仕事をするエンジニアなら誰もが一度は書くであろうにもかかわらず、書き方や特性を熟知している人が少ない言語です。この記事は、シェルスクリプトを書くときに罠を踏まないようにするために最低限あなたが気を付けるべき tips 集です。「たかがシェルスクリプト」とは思わないでください。生半可に書かれたシェルスクリプトはあなたの (チームの) 生産性をかえって低下させます。 Shebang に bash を明示しろ Bash でしか使えない機能のことを俗に Bashism と言います。Bashism はもちろん Bash 以外のシェルでは動きません。これに関するありがちな罠は、以下のように発生します。 Bash が /bin/sh として使われている環境でシェルスクリプトを書く。うっかり Bashism がシェルスクリプトに含まれていても、 /bin/sh は何も
Note: The FAQ was split into individual pages for easier editing. Also, for faster loading of this page, the answers are no longer presented here in their entirety. Readers, click the [BashFAQ/nnn] link at the bottom of each answer to read the rest of the answer. Editors, click the '[edit]' link at the bottom of each entry. Don't add new ones to this page; create a new subpage with the next availa
ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と
パターン指定で変数の中身の一部を削除 nextboot(8)を読んでいくと、次のようなコードも見られる。 先に、変数を指定して、その中身をパターン指定に使わせる変数展開という手法を紹介した。変数展開では、変数が格納している文字列の内容を切り取って表示するということもできる。指定方法は4種類。「${変数名%パターン}」「${変数名%%パターン}」「${変数名#パターン}」「${変数名##パターン}」だ。分かりにくい記述方法だが、シェルスクリプトではこの方法で文字列を編集することが少なくない。 上に挙げたサンプルの変数展開の部分を解説しよう。「${2%\"*}」の部分は、変数${2}に入っている文字列から「"*」に一致する部分を末尾から探し、そこから末尾まで削除するという意味になる。例えば、変数${2}に入っている文字列が「 "-s" 」なら、「${2%\"*}」とパターンを指定すると、結果は
移転しました http://please-sleep.cou929.nu/20101230.html
「シェルスクリプトの実行過程でエラーが発生した場合に処理を止めたい」・・・それをすごくシンプル(簡単)に実現したい場合に使えます。 例えば、以下のようなシェルスクリプトを書いた場合、、、 #!/bin/sh mkdir /tmp/hoge/fuga touch /tmp/hoge/fuga/test.txt 実行結果は以下のようになります。 $ ./test.sh mkdir: ディレクトリ `/tmp/hoge/fuga' を作成できません: そのようなファイルやディレクトリはありません touch: `/tmp/hoge/fuga/test.txt'にtouchできませんでした: そのようなファイルやディレクトリはありません/tmp/hogeディレクトリが存在しないので、/tmp/hoge/fugaのmkdirでこけます。まぁ普通ですよね。。。 が、何も考えずに書くと、↑のように、その
bash の解説なんて、ネット上には結構あったりするのだが、これをわざわざ公開しようというのは、次の理由による。 某ソフトハウスでのUNIX講座用に書いてしまったから。 ネット上にある bash 解説だと、表面的な構文解説程度であり、きっちりスクリプト言語として使い倒すレベルの解説はあまりない。まあ、プログラミング言語として凝ったサンプルもやってみようじゃないの、というノリで割とディープに解説する。 アクセスを増やすための人気取り(苦笑)。 まあ、そんな不純な目的による bash 解説である。とはいえ、日常的に使い慣れている bash であっても、「え、こんな使い方があったの!?」という発見もあることであろう。苦笑しながらでも読んでくれたまえ。だから、初歩的なリダイレクションなんかは解説しないからそのつもりで。 ちなみに参考書としたのはオライリー・ジャパン刊「入門 bash 第2版」である
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く