2017-12-12 7 views
1

シェルスクリプトが機能しない理由を理解できません。変数でシェル関数を実行

#!/bin/sh 

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

projectsNames=`getProjectsNames` 
echo $projectsNames 

このコードは、エラーを返して:あなたの助けのための

script.sh: 6: return: Illegal number: .

感謝を!

+0

'projectsNames = $(getProjectsNames)' – SriniV

答えて

0

UNIXシェルでは、returnステートメントは、というプログラムの終了コードとして適格であるの番号のみを返すことができます。ほとんどのLinuxおよびUnixシステムでは、それはだ、0〜

あなたは、文字列を渡しstdoutおよび出力キャプチャを使用したい場合は255:

#!/bin/sh 

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

projectsNames=$(getProjectsNames) 

return $listからecho "$list"への変更を。

0

そのreturnは、関数から返す何かをキャプチャしたい場合は

#!/bin/sh 

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

    projectsNames=$(getProjectsNames) 
    echo $projectsNames 

参照、例えば、echoを使用するので、手動return [n] : Causes a function to exit with the return value specified by nから

を参照してください、数値を期待しているためこのリンクの詳細はこちらStackOverFlow

関連する問題