ユーザーの入力はスペースで区切って、これらの入力をカンマで区切るコマンドに入力する必要があります。

ユーザーの入力はスペースで区切って、これらの入力をカンマで区切るコマンドに入力する必要があります。

そのため、スペースで区切られた文字列または値を入力してから、値を1つずつ確認し、それを私が持っているコマンドの1つに必要な形式に変換するユーザーから入力を受け取ることを望んでいます。私は次のようなものが欲しい。

ユーザーは次のようなプロンプトを受け取ります。

Specify the package: perl runtime pool tools

私は4つの文字列だけを入力します。今私の出力については、次のようにしたいと思います。

Pkg1=perl,Pkg2=runtime,Pkg3=pool,Pkg4=tools

Pkgはデフォルトでユーザーが入力した金額に基づいて1ずつ増加します。

可能ですか? Bashでどのようにこれを達成できますか?

どんな助けでも大変感謝します!時間をいただきありがとうございます!

ベストアンサー1

最初メッセージを表示しない!データの入力を求めるのは良い考えではありません。間違えやすく、スペルが間違っていたり、コマンドを繰り返すことができず、ファイル名にタブ補完機能を使用できません。これは何の理由もなくユーザーとあなたの人生をより困難にするだけです。ユーザーにパッケージ名をパラメータとして渡すようにします。

#!/bin/bash

packageString="Pkg1=$1"
shift

for (( i=1; i<=$#;i++)); do
  packageString+=";Pkg"$((i+1))"=${!i}"
done
echo "$packageString";

質問への入力を使用して上記のスクリプトを実行すると、次の結果が表示されます。

$ foo.sh perl runtime pool tools
Pkg1=perl;Pkg2=runtime;Pkg3=pool;Pkg4=tools

おすすめ記事