1330403 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

さすらいのプログラマ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Profile

xyzzy_user

xyzzy_user

Calendar

Comments

AllenRaf@ fig Dib <a href="https://privatespb.com…
Rolandodeamp@ surry alubs <a href="https://blyadsk.ru/&qu…
Victornuple@ wic Exhax <a href="https://sosamba196.ru/…
avenue17@ Sains Sig круть...инетересно было прочесть
Davidabeds@ dog Slild Надеюсь, Вы найдёте верное решение.

Freepage List

2007/12/04
XML
カテゴリ:シェル
kshで関数を作ることができる。(kshだけではないが・・・)
function myfunc {
    :
    :
    :
}

戻り値は数値となるため、文字列を返すことができない。グローバルに定義された変数にセットすれば、特に必要ないのかもしれない。やはり、セット先を決めておくのはあまりよいとは思えない。そこで最初に思いついたのが、evalを使った方法だ。
function myfunc {
  if [ $# -ne 1 ]; then
    return 0
  fi
  _RETURN_VAL_=$1
  eval "${_RETURN_VAL_}"="Hello, World"
  return 1
}
# 呼び出し方は以下のとおり。
myfunc RETURN_STR
echo "${RETURN_STR}"

引数と与えた文字列を変数名としてevalにて評価することにセットすることができる。ただし、この変数(RETURN_STR)はグローバルな変数ということになる。
文字列自体を返すことができれば、もうちょっとエレガントになると思われる。
次に思いついたのは以下のやり方。
function myfunc {
  echo "Hello, World"
}
# 呼び出し方は以下のとおり。
RETRUN_STR=`myfunc`
echo "${RETURN_STR}"

バックスラッシュを使うが、このやり方のほうがよさそうだ。ただ、エラー処理が必要な場合は、最初のやり方のほうがいいかもしれない。
どちらも含めたやりかたもできる。
# 呼び出し方は以下のとおり。
function myfunc {
  if [ $# -ne 1 ]; then
    _RETURN_VAL_=""
  else
    _RETURN_VAL_=$1
  fi
  if [ "${_RETURN_VAL_}" != "" ]; then
    eval "${_RETURN_VAL_}"="Hello, World"
  else
    echo "${_RETURN_VAL_}"
  return 1
}
# 呼び出し方は以下のどちらでも可
myfunc RETURN_STR
echo "${RETURN_STR}"
RETRUN_STR=`myfunc`
echo "${RETURN_STR}"

ちなみにmyfunc内の_RETURN_VAL_はlocalとして宣言すれば、さらによいと思う。(localの使えない場合もあるので今回ははずしています)





お気に入りの記事を「いいね!」で応援しよう

Last updated  2007/12/04 09:09:51 AM
コメント(0) | コメントを書く
[シェル] カテゴリの最新記事



© Rakuten Group, Inc.