そのため、スペースで区切られた文字列または値を入力してから、値を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