別のファイルの別の関数によって呼び出されている関数から戻り値として文字列を送信しようとしています。 1つは他のソース。 )bashのある関数から別の関数に文字列戻り値を取り込みます
#####################################################
##filename: conf_abc.menu
#######################################################
#!/bin/bash
source <path>/conf_pqr.menu
function abc() {
var=$(call_pqr)
echo ${var}
}
##Calling function abc
abc
#########################################################
##filename: conf_pqr.menu
########################################################
#!/bin/bash
RET_VAL=""
function get_intf() {
cmd=`some command`
RET_VAL=${cmd}
}
function call_pqr() {
comm=$(array of choices)
for choice in $comm
do
case $choice in
IF)get_intf;
echo "$RET_VAL";;
esac
done
}
私は、関数ABC(の "VAR" の配列から選択を見ることを期待:
コードはそうのような、です。
しかし、conf_abc.menuの "echo $ {var}"は何も出力しません。
私はやってスクリプトを実行します。 ./conf_abc.menu
私が間違って何をやっているの?
「IF」のケースがヒットしていることをご存じですか? 'echo" $ RET_VAL ">&2'を追加して、' $ RET_VAL'にあなたが思うものが含まれていることを確認してください。ところで、あなたが[mcve]を作成した場合、それは "選択肢の配列"と "あるコマンド"を実際の値に置き換えることで可能になります。 –
メインスクリプトに 'set -x'を追加して、あなたのスクリプトが実行されているときに実際に実行されているコマンドを見てください。 –