Bashの変数にユーザー入力を読み取る方法は?


83

iOSデバイスで新しいユーザーを作成するプロセスを簡素化するスクリプトを作成しようとしています。内訳は次のとおりです。

# fullname="USER INPUT"
# user="USER INPUT"
# group=$user
# uid=1000
# gid=1000
# home=/var/$user
# echo "$group:*:$gid:$user" >>          /private/etc/group
# echo     "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
# passwd $user
# mkdir $home
# chown $user:$group $home

ご覧のとおり、一部のフィールドには入力が必要です。スクリプトで変数の入力を要求するにはどうすればよいですか?

回答:


171

使用read -p

# fullname="USER INPUT"
read -p "Enter fullname: " fullname
# user="USER INPUT"
read -p "Enter user: " user

確認したい場合:

read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1

また、パス名の展開やスペースによる単語の分割を防ぐために、変数を引用符で囲む必要があります。

# passwd "$user"
# mkdir "$home"
# chown "$user:$group" "$home"

7
を使用できます${confirm^^} == 'YES'
Aleks-DanielJakimenko-A。

1
@ Aleks-DanielJakimenkoこれは他の人が使用する通常の方法ですが、4.0以降とのみ互換性があります。
konsolebox 2013

補足として:exit 1エラーで終了することを意味します。
ティモ



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.