(for Internet Explorer)
ListUpIn_func  <PackagePath>
圧縮ファイルの中に入っているファイルのパスを一覧表示します。
【引数】
PackagePath
圧縮ファイルのパス(*.tar.bz2, *.tar.gz, *.zip)
テスト
サンプル
ListUpIn_func  "sample.tar.bz2"
ExpandWildcard_func  <WildcardPath> <out_FolderAbsPath> <out_StepPaths> [<Options> ...]
ワイルドカードを展開して、パスを一覧します。
【引数】
WildcardPath
out_FolderAbsPath
ワイルドカード (*) を含むパス
(出力) 基準フォルダーの絶対パス
(出力) 相対パスの配列
out_StepPaths
Options ...
オプション(下記)
Options 引数
--File
--Folder
--SubFolder
テスト
ファイルを一覧する
フォルダーを一覧する
--Link
シンボリック・リンクを一覧する
サブ・フォルダーも含めて一覧する
--File、--Folder、--Link は、同時に複数指定できます。
--File、--Folder、--Link の1つも指定しないときは、--File、--Folder、--Link のすべてを
指定したときと同じになります。
サンプル
  local  folder
  local  step_paths
  local  path
  ExpandWildcard_func  "T_*"  folder  step_paths  --File --SubFolder  #//[out] folder, step_paths

  for path  in "${step_paths[@]}" ;do
    echo  "$folder/$path"
  done ; done_func $?
ReplaceTextFile_func  <Path> <FromText> <ToText> [<Option>]
テキスト・ファイルの内容を置き換えます。
【引数】
Path
内容を置き換えるファイルのパス
置き換える前の文字列。sed の正規表現。改行は\n
FromText
サンプル
  MultiLine_func  "\n" \
    "def" \
    "ghi"
  from="$g_Ret"
  MultiLine_func  "\n" \
    "xx" \
    "yy" \
    "zz"
  to="$g_Ret"
  ReplaceTextFile_func  "sample.txt"  "$from"  "$to"
置き換えた後の文字列。改行は\n
ToText
Option
省略時=デフォルト動作。 "-i" FromStr の大文字小文字を区別しない
def
ghi
xx
yy
zz
に置き換えます
2行まで
テスト
  ReplaceTextFile_func  "sample.txt"  "def\nghi"  "xx\nyy\nzz"
上記コードは、下記コードと同じです。
Option="-i" は、Mac OS X Snow Leopard では使えません。
行の削除、複数行の置き換え
関連
FromText にマッチする文字列が複数あるときは、そのすべてを置き換えます。
参考
正規表現をエスケープする
サンプル
  ReplaceTextFile_func  "sample.txt"  "value=0"  "value=1"
value=0 を value=1 に置き換えます。
複数行を置き換えます。
サンプル
  ReplaceTextFile_func  "sample.h"  '^.*SymbolA.*$'  ""
に置き換えます
abc

abc
abc
#define  SymbolA  1
abc
正規表現を使った行の置き換え
ReplaceTextFileLineRange_func  <Path> <StartOfFromText> <EndOfFromText> <ToText> [<Option>]
テキスト・ファイルの中の複数行のテキストを置き換えます。
【引数】
Path
内容を置き換えるファイルのパス
置き換える前の先頭行の一部にマッチする sed の正規表現
StartOfFromText
置き換えた後の文字列。 ""=行を削除する
ToText
Option
省略時=デフォルト動作。
"-i" = 置き換える前の大文字小文字を区別しない
置き換える前の最終行の(同上)。 ""= 1行のみ置き換える
EndOfFromText
テスト
サンプル
MultiLine_func  "\n" \
  "x" \
  "y"
local  a1="$g_Ret"
ReplaceTextFileLineRange_func  "_tmp.txt"  "c"  "f"  "$a1"
abc
cde
efg
ghi
なら
x
y
ghi
に置き換わります
関連
複数行の文字列を作ります
置き換えた後の複数行の改行文字は、"\n" を指定してください。
最終行の末尾に改行文字は付けないでください。
置き換える前の複数行を削除するときは、ToText="" を指定してください。
置き換えた後を1行分の空行にするときは、ToText="\n" を指定してください。
Option="-i" は、Mac OS X Snow Leopard では使えません。
に置き換わります
abc
ghi
なら
abc
cde
ghi
efg
サンプル
ReplaceTextFileLineRange_func  "_tmp.txt"  "e"  ""  ""
1行ずつ削除する
参考
正規表現をエスケープする
GetAbsPath_func  <StepPath> [<BasePath>] ; <AbsPath>="$g_Ret"
相対パスを絶対パスにします。
【引数】
StepPath
相対パス
BasePath
基準パス、省略時=カレント・フォルダー
g_Ret
(出力)絶対パス
サンプル
GetAbsPath_func  "a.txt"
Assert_func  '"$g_Ret" == "/home/user1/a.txt"'
テスト
サンプル
GetAbsPath_func  "a.txt"  "/home/user1/sub"
Assert_func  '"$g_Ret" == "/home/user1/sub/a.txt"'
関連
リンクを含まない絶対パスに変換します。
GetParentAbsPath_func  <Path> ; <ParentPath>="$g_Ret"
親フォルダーの絶対パスを返します。
【引数】
Path
任意のパス
(出力)Path 引数の親フォルダーの絶対パス
g_Ret
サンプル
GetParentAbsPath_func  "a.txt"
Assert_func  '"$g_Ret" == "$PWD"'
テスト
関連
親フォルダーの方向にファイルを探します。
SearchParent_func  <Path> ; <ParentPath>="$g_Ret"
親フォルダーの方向にファイルを探して見つかった絶対パスを返します。
【引数】
Path
任意のパス
(出力)Path 引数の親フォルダーの絶対パス
g_Ret
サンプル
cd  "/home/user1/bashlib/sub/sub"
GetParentAbsPath_func  "menu"
Assert_func  '"$g_Ret" == "/home/user1/bashlib/menu"'
上記の結果になる状況:
  /home/user1/bashlib/sub/sub/menu が無く、
  /home/user1/bashlib/sub/menu が無く、
  /home/user1/bashlib/menu があるとき
Path="sub/file" のときは、sub フォルダーから親の方向に file を探します。
見つからないときは、g_Ret="" になります。
テスト
関連
親フォルダーの絶対パスを返します。
その他
PATH や INCLUDE を編集する
プロセス制御、関数呼び出し
長い名前のオプションを連想配列にまとめます。
関数に渡された引数の数が異なるときはエラーにします。
関数に渡された引数の数が少ないときはエラーにします。
関数に渡された引数の数が多いときはエラーにします。
出力変数名がローカル変数名と衝突していたらエラー。
eval する内容がローカル変数名と衝突していたらエラー。
ローカル変数を、まとめて宣言します。
出力変数に値を設定します。
出力変数に配列を設定します。
シェルから使えるコマンドを取得します。
アプリを起動するコマンドを取得します。 Mac OS X 用。
OS が Mac かどうかを返します。
パッケージがインストールされているかどうかを返します。
インストールやアンインストールを許可するかどうか。
インストールされていなければ、インストールします。
アンインストールします。
GetLongOptions_func  <out_Arguments> <out_OptAssocArray> <AllArguments> ...
長い名前のオプション(GNU形式)を連想配列にまとめます。
【引数】
out_Arguments
(出力) 長い名前のオプション以外の AllArguments
out_OptAssocArray
(出力) 長い名前のオプションの連想配列。 キーは -- をカット
AllArguments, ...
すべての引数(下記)
サンプル
function  T_GetLongOptions_func()
{
  T_GetLongOptionsSub_func  --opt1  arg1  --opt2=a,b  --opt3="a b"  arg2  arg3
}

function  T_GetLongOptionsSub_func()
{
  local  arguments
  $declare_AssociativeArrayClass  option

  GetLongOptions_func  arguments  option  "$@"  #//[out] arguments, option

  Assert_func  '"${arguments[0]}" == "arg1"'
  Assert_func  '"${arguments[1]}" == "arg2"'
  Assert_func  '"${arguments[2]}" == "arg3"'
  Assert_func  '${#arguments[@]}  == 3'

  Attr_func  option  opt1 ; Assert_func  '"$g_Ret" == "1"'  #// 値の指定が無ければ1
  Attr_func  option  not  ; Assert_func  '"$g_Ret"  == ""'  #// オプション指定が無ければ ""
  Attr_func  option  opt2 ; Assert_func  '"$g_Ret" == "a,b"'
  Attr_func  option  opt3 ; Assert_func  '"$g_Ret" == "a b"'
}
テスト
GetLongOptions_func
コマンドラインに指定されたオプションなら "$g_Arguments[@]"
関数に指定されたオプションなら "$@"
AllArguments 引数
--flag
--value="ABC"
out_OptAssocArray 引数に得られる連想配列の要素
連想配列のキーは、"flag"、対応する値は、"1"
(未指定)
連想配列のキーは、"value"、対応する値は、"ABC"
任意のキーに対応する値は、""
--opt1  arg1  --opt2=a,b  --opt3="a b"  arg2  arg3
opt1
not
opt2
opt3
関連
短い名前のオプション(POSIX 形式)を取得する
CheckArgCount_func  <Count> <AllArguments>
関数に渡された引数の数が、指定した数と異なるときはエラーにします。
【引数】
Count
要求する引数の数
すべての引数
AllArguments
サンプル
  CheckArgCount_func  2 "$@"
テスト
関連
CheckMinArgCount_func  <MinCount> <AllArguments>
関数に渡された引数の数が、指定した数より少ないときはエラーにします。
【引数】
MinCount
最小の引数の数
すべての引数
AllArguments
サンプル
  CheckMinArgCount_func  2 "$@"
テスト
関連
CheckMaxArgCount_func  <MaxCount> <AllArguments>
関数に渡された引数の数が、指定した数より多いときはエラーにします。
【引数】
MaxCount
最大の引数の数
すべての引数
AllArguments
サンプル
  CheckMaxArgCount_func  2 "$@"
テスト
関連
CheckOutParamIsConflictToLocal_func  <OutParamName> <LocalNames> ...
出力変数の実体の名前がローカル変数名と衝突していたらエラーにします。
【引数】
OutParamName
出力変数の実体の名前
すべてのローカル変数の名前
LocalNames, ...
function  Sample_func()
{
  local  local_a="aaa"
  OutX_func  local_a  #//[out] local_a
}

function  OutX_func()
{
  local  out_Var="$1"
  local  local_a

  local  locals="out_Var  local_a  locals"
  CheckOutParamIsConflictToLocal_func  $out_Var  $locals
  SetOutput_func  $out_Var  "bbb"   #// Sample_func の local_a 変数に格納できない
}
サンプル
CheckOutParamIsConflictToLocal_func
引数とローカル変数を宣言し、出力変数名の衝突をチェックします
関連
出力変数に設定します
テスト
bash では、呼び出し元の関数が使える変数を参照することができます。
呼び出し元の関数のローカル変数も参照することができます。
これを利用すると、引数への出力ができます。

しかし、local を使って宣言したローカル変数と同じ名前の、呼び出し元が使える変数は、
参照することができません。 呼び出し元が指定した出力引数の変数名がローカル変数の名前と
衝突していたら、出力することができません。 CheckOutParamIsConflictToLocal_func は、
それを検出します。
CheckEvalParamIsConflictToLocal_func  <EvalExpression> <LocalNames> ...
eval に渡す変数名がローカル変数名と衝突していたらエラーにします。
【引数】
EvalExpression
eval に渡す内容
すべてのローカル変数の名前
LocalNames, ...
サンプル
function  Sample_func()
{
  local  local_a="aaa"
  EvalX_func  'local_a is $local_a'
}

function  EvalX_func()
{
  local  EvalExpr="$1"
  local  local_a

  local  locals="EvalExpr  local_a  locals"
  CheckEvalParamIsConflictToLocal_func  $EvalExpr  $locals
  eval  echo  "$EvalExpr"   #// 衝突しているため Sample_func の "aaa" が参照できない
}
CheckEvalParamIsConflictToLocal_func
eval を内部で呼び出している関数である下記の EvalX_func 関数は、ローカル変数 EvalExpr
と local_a を宣言しており、EvalX_func の内部から Sample_func 関数の local_a 変数を
参照できなくなっているため、Sample_func 関数は、EvalX_func 関数の EvalExpr 引数
(第1引数)に、EvalExpr や local_a という名前の変数名を渡すことはできません。
CheckEvalParamIsConflictToLocal_func 関数は、そのときにエラーにします。
参考
テスト
→ Watch
関数の中でのみ使えるローカル変数を、まとめて宣言します。
テスト
… --local の値は、ローカル変数の名前の羅列(CSV形式)
… --arg の値は、引数の名前の羅列(CSV形式)
local  a1="$1"
local  a2="$2"
local  tmp1
local  tmp2
上記は下記のコードと同じです。
  local_func \
    --arg="   a1,  a2 " \
    --local=" tmp1,  tmp2 " \
    "$@" ; eval  "$g_Ret"
関連
出力引数の名前の衝突チェック
出力引数は、引数の名前の前に (out) を付けてください。
入出力引数は、引数の名前の前に (in_out) を付けてください。
出力引数や入出力引数の名前の衝突があれば、エラーにします。
  local_func \
    --arg="   (in_out)a1,  (out)a2 " \
    --local=" tmp1,  tmp2 " \
    "$@" ; eval  "$g_Ret"
変数が多いときは、改行することができます。
これは、" " で囲まれた文字列を途中で改行することができる bash の仕様です。
  local_func \
    --local=" tmp1,  tmp2
              tmp3 " \
    "$@" ; eval  "$g_Ret"
local_func  [--arg="<Argument> [, ...]" ]  [--local="<Local> [, ...]" ]  <AllArguments>
<Code>="$g_Ret"
【引数】
Argument, ...
引数の変数名の羅列
引数の変数の名前の羅列
Local, ...
AllArguments
"$@" を指定してください
g_Ret
(出力)変数宣言を行うソースコード
サンプル
SetOutput_func  <out_Var> <Value>
指定した変数名の、出力変数に値を設定します。
【引数】
out_Var
(出力)変数  (=変数名を入力)
変数に設定する値
Value
サンプル
function  Caller_func()
{
  local  tmp
  Called_func  tmp  #//[out] tmp : 出力を格納する変数 $不要
  echo  $tmp  #// "output"
}

function  Called_func()
{
  local  out="$1"
  CheckEvalParamIsConflictToLocal_func  "$out"  out
  SetOutput_func  $out  "output"  #// 出力を格納
}
参考
$out  "output"
$不要
Called_func の中でも、呼び出し元の tmp 変数を参照できることを
利用して、tmp 変数に値を設定しています。
関連
出力変数に配列を設定します。
出力引数の名前の衝突チェック
呼び出し側が echo 出力を取得する関数呼び出し(` ` や $( ) )をした場合、
出力することはできません。
テスト
SetOutputAsArray_func  <out_Var> <Value> ...
指定した変数名の、出力変数に配列を設定します。
【引数】
out_Var
(出力)変数  (=変数名を入力)
配列である出力変数の全ての要素
Value ...
参考
サンプル
  SetOutputAsArray_func  "$out"  "A"  "B"  "C"
out="var" のとき、var=( "A" "B" "C" ) と同じです。
出力変数に値を設定します。
テスト
呼び出し側が echo 出力を取得する関数呼び出し(` ` や $( ) )をした場合、
出力することはできません。