在变量中执行shell函数

时间:2017-12-12 11:41:33

标签: shell

我不明白为什么我的shell脚本不起作用。

#!/bin/sh

getProjectsNames() {
   list=`ls -a`
   return $list
}

projectsNames=`getProjectsNames`
echo $projectsNames

此代码返回错误:

  

script.sh:6:return:非法号码:。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

在Unix shell中,return语句只能返回数字,它们有资格成为程序的退出代码。在大多数Linux和Unix系统中,它介于0到255之间。

如果要传递字符串,请使用stdout并输出捕获:

#!/bin/sh

getProjectsNames() {
    list=`ls -a`
    echo "$list"
}

projectsNames=$(getProjectsNames)

请注意从return $listecho "$list"的更改。

答案 1 :(得分:0)

因为return需要 数值 ,请参阅手册return [n] : Causes a function to exit with the return value specified by n

因此,如果您想捕获从函数返回的内容,请使用echo,例如

    #!/bin/sh

    getProjectsNames() {
        list=$(ls -a)
        echo "$list"
    }

    projectsNames=$(getProjectsNames)
    echo $projectsNames

在此链接中查看更多内容,StackOverFlow