Blog Archives

bashでコマンドライン引数にファイルの中身を渡す

標準出力先としてファイル名を指定するのではなく、ファイルの中身(body)を引数として渡すにはどうすればよいのか? 実験用スクリプト 確認のため、次の簡易的なシェルスクリプトで各コマンドライン引数を表示させる。 入力ファイルとしては次のように改行やスペースを含んだ JSON ファイルを渡す 実行コマンド 結果論としては、以下のように printf と cat をコンボすればよい 解説 ポイントとなるのは次の箇所 ここを単純に $(cat test.json) や bash 方言のショートカットである $(< test.json) とすると、改行・スペースを引数の区切りとしてみなされてしまう この問題を回避するために、ファイルの中身全体を1文字列として扱うために printf ‘%s’ でラップさせるというわけ。 Reference linux – command line arguments from a file content – Stack Overflow

Tagged with: , , ,
Posted in linux

bashがsh互換(posix)モードで動く時

Bourne-again shell(bash) は Bourne shell(sh) の置き換えとして作られたものなので、sh の機能をほぼ引き継いだ上で、機能拡張されている。 ただし、sh と完全互換ではないので、bash のみに存在する非互換機能を意図せず sh で実行しようとすると、当然エラーになる。 bash posix モード 以下のケースで bash シェルが sh 互換の posix モードで実行されるようになる bash が sh コマンドで起動された時(shebang 含む) bash が –posix オプションとともに起動された時 bash 起動中に posix オプションが有効にされた(set -o posix)とき sh 非互換機能で実験 bash

Tagged with: ,
Posted in linux

bashでNULL文字を出力したい

NULL(¥0)文字を出力するには以下のようにする hex 指定の ‘\x00’ のかわりに digit 指定の ‘¥0′ も可能。 echo の -e はバックスラッシュのエスケープを有効にする。 同様に’\t’ などもつかえる。 echo の -n は改行を抑制する。 echo と printf の違い echo と printf の違いは次の URL を参照 Difference between printf and echo in bash http://unix.stackexchange.com/questions/58310/difference-between-printf-and-echo-in-bash bash で NULL

Tagged with: ,
Posted in linux

[bash]シェルからログアウト時にSIGHUP送信する

bash では huponexit を ON にすると、シェルからログアウトした時に、ログインシェルの各ジョブにシグナル SIGHUP を送信することができる。 手元の Ubuntu 12.04 だと、デフォルトは OFF オプション操作 オプションの一覧表示 shopt で一覧が表示される オプションの切り替え コマンド shopt の -s/u オプションがそれぞれ on/off に対応する。 s/u は set/unset のことらしい。 Bash Manual : 4.3.2 The Shopt Builtin http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html huponexit が on

Tagged with: , ,
Posted in linux

Ubuntuの/bin/shはbashではなくdash

dash is not bash みたいなシェルスクリプトがあって、こいつを Ubuntu で実行すると というようにシンタックスエラーが発生した。shebang の /bin/sh ではなく /bin/bash として実行すると とエラーにはならない。 シンタックス的に OK そうな foo.sh が一つ目ではなぜエラーになったかというと、ubuntu の /bin/sh は Almquist shell (ash) から派生したシェル Debian Almquist shell(dash) へのシンボリックリンクになっており、bash で OK な( … ) のシンタックスを dash は対応していないから。 bash と

Tagged with: , , ,
Posted in linux
Archives