readは標準入力から変数を代入するコマンドです。
$ read Hoge <<< 'as' $ echo ${Hoge} as
そもそもは標準入力と連動して動くものです。
以下のようなbashスクリプトを組み
#!/bin/bash ## hoge.sh # single 'read' statement can set multiple variables. echo -n "Enter the values of variables 'var2' and 'var3' " echo -n "(separated by a space or tab): " read var2 var3 echo "var2 = $var2 var3 = $var3"
実行権限付きでやると、スペースやタブで区切ったものがデータとして入ります。*1
$ ./hoge.sh Enter the values of variables 'var2' and 'var3' (separated by a space or tab): foo bar var2 = foo var3 = bar
さらに”a”オプションをつけると...
配列になるんです。
$ read -a Words <<< '12 34 56 78'
呼び出す時は「${変数名[番号]}」
$ echo ${Words[0]} 12 $ echo ${Words[1]} 34 $ echo ${Words[2]} 56 $ echo ${Words[3]} 78 $ echo ${Words[4]}
残念ながら、末尾を指定する「-1」は実装されてません。
$ echo ${Words[-1]} -bash: Words: bad array subscript
参考もと
- http://www.tldp.org/LDP/abs/html/x17837.html
- read --help
*1:三個目以降は二番目の変数に代入されるようです