このparset
ユーティリティを使用すると、コマンドの出力を変数または配列に保存できます。しかし、出力を特定の配列インデックスに保存したいと思います。
$ parset arr echo foo {} ::: a b c
$ echo ${arr[0]}
foo a
$ echo ${arr[1]}
foo b
$ echo ${arr[2]}
foo c
コマンドで配列インデックスをどのように指定しますか?${arr[4]}
、、${arr[5]}
に値を保存したいとします。${arr[6]}
答え1
20171122にアップグレードするか、次の操作を実行してください。
変更は簡単です。有効な変数名解決を無効にします(in env_parallel.bash
)。
# echo "$_parset_name" |
# perl -ne 'chomp;for (split /[, ]/) {
# if(not /^[a-zA-Z_][a-zA-Z_0-9]*$/) {
# print STDERR "parset: Error: $_ is an invalid variable name.\n";
# print STDERR "parset: Error: Variable names must be letter follow\
ed by letters or digits.\n";
# $exitval = 255;
# }
# }
# exit $exitval;
# ' || return 255
そして、次のことを行います。
. env_parallel.bash
parset 'arr[4],arr[5],arr[6]' echo foo {} ::: a b c
echo ${arr[6]}