シェルスクリプトの一部を別のシェルスクリプトに抽出しましたが、何らかの理由でサブスクリプトを呼び出した後、コマンド置換が機能しなくなりました。サブスクリプトに何かが含まれているとは想像できませんが、自分が何を間違っているのかもわかりません。
私がするかどうか:
dirname "$0" # works
echo "`dirname "$0"`" # works
echo "$(dirname "$0")" # works
cat <<< "`dirname "$0"`" # works
cat <<< "$(dirname "$0")" # works
"$(dirname "$0")"/setup_buildroot.sh "$BUILDROOT" # call the sub-script
dirname "$0" # works
echo "`dirname "$0"`" # empty string
echo "$(dirname "$0")" # empty string
cat <<< "`dirname "$0"`" # crash
cat <<< "$(dirname "$0")" # crash
または私はします:
dirname "$0" # works
echo "`dirname "$0"`" # works
echo "$(dirname "$0")" # works
cat <<< "`dirname "$0"`" # works
cat <<< "$(dirname "$0")" # works
"`dirname "$0"`"/setup_buildroot.sh "$BUILDROOT" # call the sub-script
dirname "$0" # works
echo "`dirname "$0"`" # empty string
echo "$(dirname "$0")" # empty string
cat <<< "`dirname "$0"`" # crash
cat <<< "$(dirname "$0")" # crash
dirnameは正常に機能しているようですが、バックティックして機能を$()
停止します。コマンド置換は空の文字列を返すだけです。
編集:すべての二重引用符を削除し""
ても効果はありません
EDIT2:サブスクリプトを呼び出すときにbashを明示的に実行しても効果はありません
EDIT3:"$(dirname "$0")"
変数に保存して使用しても効果はありません
EDIT4:同じecho
コマンドをサブスクリプトに追加すると、サブスクリプトのすべてが正常であることを示します
EDIT5:リクエストに応じて、スクリプトの出力
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
#setup_buildroot.sh output here
/home/jayen/rep
bash: syntax error near unexpected token `newline'
bash: syntax error near unexpected token `newline'