関数はスクリプトで実行されません。

関数はスクリプトで実行されません。

次の内容でShellScript.shというスクリプトを作成しました。

#!/bin/sh
# Shell script 

function help {
  echo ""
  echo "./ShellScript.sh {start | stat}"
  echo ""
  echo "These are some commands:"
  echo ""

  # Start command
  echo "start"
  echo "This starts the process"
  echo ""

  # Stat command
  echo "stat"
  echo " abcxyz"
  echo ""
}

ただし、コマンドラインに「./ShellScript.sh help」と入力すると、何も起こりません。私は一日中この問題を解決しようとしてきましたが、小さなものを見逃していると確信していますが、それが何であるかわかりません!

答え1

最終目標が何であるかはわかりませんが、./ShellScript.sh help一度電話してみてください。範囲スクリプトの「ヘルプ」; Arkadiusz Drabczykが述べたように、ShellScript.shが実行するすべてのことは、関数を設定して終了することです。

プロセスを開始または計算するためのオプションベースのスクリプトを作成するようです。この場合、引数を解析して関数を呼び出すには、「デフォルト」レベルのコードが必要です。

たとえば、ShellScript.sh の末尾に以下を追加します。

case "$1" in
start)
    echo "This starts the process"
    ;;
stat)
    echo "stat"
    echo " abcxyz"
    ;;
help)
    help
    ;;
*)
    echo "usage: $0 start|stat"
    ;;
esac

提案すると、「stat」(人間に)は「start」と非常に似ています。 「status」を考えてみましょう。

答え2

関数を定義しましたが、実際には何もしませんでした。あなたはする必要があります呼ぶスクリプトで機能します。これがより一般的なアプローチであり、スクリプトの引数に基づいていくつかの関数の1つを呼び出す場合は、次のように設定します(そのうちのいくつかを示して最後に「$」を追加しました)。

    # Stat command
    echo "stat"
    echo " abcxyz"
    echo ""
}

$1

関連情報