Неверный статус выхода с присвоением локальной переменной

Пример ниже показывает, как, еслиtemp_file сделанlocal как часть той же линии, чтоmktemp затем вызывается состояние выхода, полученное с помощью$? всегда равен нулю, независимо от того, была ли команда выполнена успешно или нет (mktemp_xyz используется для того, чтобы всегда выходить из строя). Еслиtemp_file сделанlocal заранее тогда$? статус выхода, как и ожидалось.

Может кто-нибудь объяснить, что здесь происходит, пожалуйста?

#!/bin/bash

test_1()
{
    local temp_file=$(mktemp_xyz -q -t "test.tmp.XXXXXX")
    local make_temp_file_ret_val=$?

    echo "temp_file: $temp_file"
    echo "make_temp_file_ret_val: $make_temp_file_ret_val"
}

test_2()
{
    local temp_file=""
    temp_file=$(mktemp_xyz -q -t "test.tmp.XXXXXX")
    local make_temp_file_ret_val=$?

    echo "temp_file: $temp_file"
    echo "make_temp_file_ret_val: $make_temp_file_ret_val"
}

test_1
echo ""
test_2

Выход:

$ ./test 
./test: line 6: mktemp_xyz: command not found
temp_file: 
make_temp_file_ret_val: 0

./test: line 16: mktemp_xyz: command not found
temp_file: 
make_temp_file_ret_val: 127

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос