GNU/Linux >> Linux の 問題 >  >> Linux

Linux bash:複数の変数の割り当て

時々、ファンキーなことをしなければならないことがあります。コマンド (たとえば、SDGuero による日付の例) から読み取りたいが、複数のフォークを避けたいとします。

read month day year << DATE_COMMAND
 $(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year

read コマンドにパイプすることもできますが、サブシェル内で変数を使用する必要があります:

day=n/a; month=n/a; year=n/a
date "+%d %m %Y" | { read day month year ; echo $day $month $year; }
echo $day $month $year

結果は...

13 08 2013
n/a n/a n/a

最初に頭に浮かぶこと:

read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"

出力は、当然のことながら

1|2|3

値を配列に代入したかったのです。そこで、Michael Krelin のアプローチを拡張して、次のことを行いました:

read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"

2|4|6 


これが役立つと思います...

スクリプトでユーザーが入力した日付 (mm/dd/yyyy) を分解するために、日、月、年を配列に格納し、次のように値を個別の変数に入れます:

DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)

Linux
  1. Bashスクリプト(I)

  2. パイプからシェル変数に値を読み込む

  3. Linuxスクリプトで端末のユーザー入力を隠す

  1. Bash のリストに変数が存在するかどうかを確認する

  2. LinuxのBashで一度に複数のファイルを削除するには?

  3. BASH:重複ファイルの検索 (MAC/LINUX 互換)

  1. Bash変数代入の単一括弧?

  2. シェル変数の割り当てにおける改行の自動変換?

  3. Bashで変数が数値かどうかをテストするにはどうすればよいですか?