【发布时间】:2015-10-27 23:59:49
【问题描述】:
下面的示例显示了如果将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
谢谢。
【问题讨论】:
标签: bash