スクリプト実行時に引数として渡された内容は、位置パラメータと呼ばれる特殊変数に保持される。これらはスクリプト中では、$1~$9で表わせる。 10番目以降の位置パラメータは、${10}のように記述する。 なお、位置パラメータは関数への引数を展開する場合にも使う。
グローバル変数としてエラーバッファを用意しておく err_buf="" function err() { # Usage: trap 'err ${LINENO[0]} ${FUNCNAME[1]}' ERR status=$? lineno=$1 func_name=${2:-main} # ログに出力するエラー。ここだけ書き換えればいい err_str="ERROR: [`date +'%Y-%m-%d %H:...
・・・で、調べてみたところ、後続の引数が$0,$1,$2,...に設定されるのは、command_stringの中だったようです(その場合、command_stringは必ず一重引用符で囲む必要があります。二重引用符で囲むと、変数展開された結果をbashコマンドに渡してしまうため)。
変数展開には次のようなものがあります。ここで「定義済」とは変数が定義されていること、「設定済」とは変数が定義され1文字以上の文字を設定されていることを示します。 ${FOO}# FOOの値${FOO:-word}# FOOが設定済であればその値、さもなくばword(FOOは未設定のまま)${FOO:=word}# FOOが設...
以下のスクリプトでは、変数$addrs文字列がreadコマンドに渡されます。IFSは、文字列変数の単語境界として機能する区切り文字を設定します。 これは、-がこの場合の単語の境界であることを意味します。-aオプションはreadコマンドに配列に分割された単語を格納するように指示し、-rオプションはre...
すでにQiitaにもいくつか記事があるが ^1、Bashでの各種の括弧はそれぞれ意味がある。自分でも知らなかったBashの括弧もあったので、改めてまとめてみた。なお、Bashの話ではあるが、Bo…
というので、CommandLine-Fuのワンライナーは ブレース展開をNullStringで出力して、バックスペースで消していました。 $_{1..5} と アンダーバーを使っているけど、このアンダーバーは何でもよくて、代入されていない変数であればいいです。
デフォルトでcommand='command 'のエイリアスが定義されています(最後の空白によりcommandに続く単語もエイリアス展開が行われる)。 ksh93u+m では上記のエイリアスは定義されていません。 mksh R59c-1 ではcommand -vでPATH環境変数の相対パスでコマンドが見つかった場合に絶対パスを出力す...
TL;DR@ の違いは複数の引数を一つに結合するかしないかの違いです。通常は複数の引数を一つに結合したりしないので "* や $@ …
Bash でシェルスクリプトを勉強していくと出会うのが : (コロン)という名前の組み込みコマンド。このコマンドは何もしないコマンドです。こんなコマンドの存在は不思議だなと思う反面、C言語にも v…