Bash

將退出程式碼分配給 shell 局部變數

  • March 1, 2021
#!/bin/bash
function0()
{
local t1=$(exit 1)
echo $t1
}

function0

echo列印空值。我期望:

1

為什麼t1變數沒有被分配退出命令的返回值 - 1

local t1=$(exit 1)告訴外殼:

  • 在子shell中執行exit 1
  • 將其輸出(如輸出到標準輸出的文本)儲存在t1函式本地的變數中。

因此,t1最終為空是正常的。

$()稱為命令替換。)

退出程式碼總是分配給$?,所以你可以這樣做

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

以獲得您想要的效果。您當然可以分配$?給另一個變數:

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

退出程式碼儲存在$? 多變的。使用命令替換僅擷取輸出,您應該使用(…) 創建 subshel​​l

#!/bin/bash

func() {
 (exit 1)
 local t1=$?
 printf '%d\n' "$t1"
}

func

引用自:https://unix.stackexchange.com/questions/207957