2014-12-13

zsh: 配列変数の操作方法

前回の報告、Zsh:「スカラー変数と配列変数の初歩的な処理法」を書いた後で、いくつかの小技を知ったので纏めてみました。


(1) スカラー変数からアレイ変数への変換



「"From Bash to Z Shell", Oliver Kiddle et.al. , Constructing an Array, p281」を眺めていたら;
  • src_files=( **/*.[ch]  )
という記述があった。そこで、簡単な実例を作ってみた;
#!/bin/zsh 
a=($(ls))
i=0
for et in $a; do
    i=$(($i+1))
    echo "$i $et"
done
この変数aは配列変数で在ることが確かめられた。要は標準出力を持つコマンド(ls)を「$()」の中で実行; $(ls)すれば配列変数に変換できる。

そこでスカラー変数,sを表示するコマンド「echo s」について同じことをすると、配列変数,aに無事に変換できました、前回の手法と比較すると直截な表現だと思います。
  • a=( $(echo $s) )        #今回
  • echo s | read -A a     #前回

(2)  アレイ変数の操作


元ネタは「Zsh文法帳なのですー>ω<というサイトです。
この中に、興味深いのが2つありました;
  • 「配列を別の配列変数に代入するときは、()で囲むのです」
    • b=($a)             #配列から配列へのcopy
  • 「要素の追加には+=を」
    • a+=(x y)           #配列へのappend
これらのテスト中に偶然出来たのですが、要素の追加法です;
  • a=(u v w $a x y z)    #append
zshのマニュアルは難しけど、トライ&エラーで思わぬ動作を見つけるのも面白いかな。



関連記事



____
このページの履歴
  1. 開始 2014-12-13(土) 17:49:43 
  2. 修正 2015-06-15(月) 19:22:59  e → a 
  3. 追加 2015-06-15(月) 21:30:08  関連記事 
  4. 修正 2015-06-17(水) 11:14:13  「a=( $(echo s) )  」→「a=( $(echo $s) )   」

0 件のコメント:

コメントを投稿

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...