我不明白为什么我的shell脚本不起作用。
#!/bin/sh
getProjectsNames() {
list=`ls -a`
return $list
}
projectsNames=`getProjectsNames`
echo $projectsNames
此代码返回错误:
script.sh:6:return:非法号码:。
感谢您的帮助!
答案 0 :(得分:0)
在Unix shell中,return
语句只能返回数字,它们有资格成为程序的退出代码。在大多数Linux和Unix系统中,它介于0到255之间。
如果要传递字符串,请使用stdout并输出捕获:
#!/bin/sh
getProjectsNames() {
list=`ls -a`
echo "$list"
}
projectsNames=$(getProjectsNames)
请注意从return $list
到echo "$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