シェルローカル変数に終了コードを割り当てる

シェルローカル変数に終了コードを割り当てる
#!/bin/bash
function0()
{
 local t1=$(exit 1)
 echo $t1
}

function0

echonull 値を印刷します。私は期待:

1

変数に終了t1コマンドの戻り値が割り当てられていないのはなぜですか1

ベストアンサー1

local t1=$(exit 1)シェルに次のように教えてください。

  • exit 1サブシェルで実行します。
  • その出力(標準出力に印刷されたテキストなど)を関数t1のローカル変数に保存します。

したがって、t1空のままで終わるのが正常です。

$()と呼ばれる。コマンドの置き換え.)

終了コードは常にに割り当てられているため、$?次のことができます。

function0()
{
  (exit 1)
  echo "$?"
}

希望の効果を得るために。もちろん、$?他の変数に割り当てることもできます。

function0()
{
  (exit 1)
  local t1=$?
  echo "$t1"
}

おすすめ記事