.bash プログラムヘルプ

.bash プログラムヘルプ

shiftコマンドライン引数の数を計算し、毎秒1つの引数を画面に印刷し、残りのコマンドライン引数の数を報告するセクションをシェルスクリプトに追加する必要があります。したがって、画面では6 5 4 3 2 1(6つのコマンドライン引数を入力した場合)がカウントダウンされます。

また、最後のコマンドライン引数に達すると($ 1に送信されます)、プログラムは、「入力された最後のコマンドライン引数は______です。(とにかく)」などのステートメントのコマンドライン引数の値をユーザーに通知します。値がそこに印刷されます)。

これまでこのコードはありますが、最初のパラメータのみを印刷し、数字を印刷しません。

while read -n 1 -p "Press Enter to Continue.." key
do
     if [ "$key" = '' ]; then
         sleep $#
         shift $1
         echo "The last command line parameter you entered at the command line was: $1"
         break
     else
         echo "no key was pressed"
     fi
done

私は何が間違っていましたか?問題を解決するにはどうすればよいですか?

ベストアンサー1

そして数字を印刷しません。

$#パラメータの数が含まれているので、echo "$#"必要な場所にこのようなものを使用してください。

sleep $#

引数が6つの場合、実行中に6秒間スリープモードに切り替わります。一度に1秒ずつ寝たいかもしれません。

shift $1

引数は、shift削除するデフォルトの引数の数です。したがって、複数のパラメータを一度に削除でき、最初のパラメータが数値でない場合はエラーが発生する可能性があります。

おすすめ記事