bash

时间:2017-04-13 05:00:47

标签: bash

我定义了一个函数t,它只返回传递给它的第一个参数。在开始时似乎工作正常。但是在我休息吃午饭后,我回忆起t而没有通过任何争论。它在第1时返回代码为127,而不是我期望的0。在此之后,它的工作正常,因为我期待最后的回忆。

这很奇怪。它会发生什么?或者我做错了什么?

$ t; echo $?   ## the 1st time I call function t, its returncode is 127
127
$ t 3; echo $?
3
$ t; echo $?  ## the 2nd time I call function t, its returncode is 0
0
$ t; echo $?  ## the 3rd time I call function t, its returncode is 0
0
$ declare -f t
t ()
{
    return $1
}
$
$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ lsb_release -a
LSB Version:    :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 5.11 (Final)
Release:        5.11
Codename:       Final

1 个答案:

答案 0 :(得分:1)

如果$1未定义且未加引号,则您的函数只会运行return

这将返回上一个命令的结果,即在没有参数的情况下运行t之前退出的任何命令。