Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在UNIX中将函数中的属性调用为另一个函数_Linux_Bash_Unix_Ksh - Fatal编程技术网

Linux 在UNIX中将函数中的属性调用为另一个函数

Linux 在UNIX中将函数中的属性调用为另一个函数,linux,bash,unix,ksh,Linux,Bash,Unix,Ksh,下面是一段代码片段 function currmonth { curr_mon=`echo $(date +%x)` yy=`echo $curr_mon| awk '{print substr($0,9,2)}'` mm=`echo $curr_mon| awk '{print substr($0,1,2)}'` dd=`echo $(date -d "$mm/1 + 1 month - 1 day" "+%d")` # <--

下面是一段代码片段

    function currmonth
    {
    curr_mon=`echo $(date +%x)`
    yy=`echo $curr_mon| awk '{print substr($0,9,2)}'`
    mm=`echo $curr_mon| awk '{print substr($0,1,2)}'`
    dd=`echo $(date -d "$mm/1 + 1 month - 1 day" "+%d")`   # <--
    }
    function test
    {
     echo $(currmonth.dd)                                  # <--
    }
功能当前月
{
curr_mon=`echo$(日期+%x)`
yy=`echo$curr|u mon | awk'{print substr($0,9,2)}'`
mm=`echo$curr|u mon | awk'{print substr($0,1,2)}'`

dd=`echo$(日期-d“$mm/1+1个月-1天”+%d”)`
dd
是一个变量。您可以使用以下命令打印其值:

function test
{
    echo $dd
}

currmonth    # call currmonth()
test         # call test()

但是如果我在两个或多个函数中有变量'dd',它将如何区分eeg:function currmon{dd}function prevmon{dd}function test{echo$dd}在这里,我们如何从函数中调用特定变量除非您将一个变量声明为函数的局部变量,否则默认情况下它是全局变量,因此两个函数访问相同的
dd
@Rahulsawant:除了@chepner所说的:如果变量不是局部变量,则可以访问(和编辑)全局。它只是全局变量dd。但是如果它被声明为“本地”,那么它只能在该范围内可见(即,您不能从另一个函数或脚本的另一部分访问它)。如果您有多个函数,每个函数都有其“自己的”dd,则需要区分它们,而不是声明和使用另一个全局变量(例如:
curr\u mon\u dd
等,在您的“currmonth”函数中),并使用该区分名称从另一个函数访问它。我可以推荐术语“using”而不是“calling”(您调用程序或函数),以及“variable”而不是“attribute”。
$(…)
符号是“命令替换”;它在括号内运行命令,值是该命令的标准输出。名称
currmonth.dd
可能是命令名(但可能不是);这与函数
currmonth
无关。您应该可以只使用
echo$dd
,除非
ksh
默认将函数中的变量设置为非全局变量(我相当肯定它不会)。Shell默认使用“全局变量”。谢谢英特尔