2016-06-22 1 views
1

リスト内のすべてのアイテムを100で除算し、出力をリストとして返す関数を作成しようとしています。このようなことをする良い方法はありますか?操作を使用してbashを変更するリスト

例:

perform_operation() { 
    for num in $1; do 
     echo "$num/100" | bc 
    done 
} 

list=$(seq 1 1 10) 
new_list=$(perform_operation $list) 
echo $new_list 

答えて

1

バッシュアレイは非常に簡単ではありません。

https://lukeshu.com/blog/bash-arrays.html

perform_operation() { 
    { echo scale=2 
    for num; do #`for something; do` is short for `for something in "[email protected]"; do` 
     echo "$num/100" 
    done ; } | bc 
} 

list=({1..10}) 
new_list=($(perform_operation "${list[@]}")) 
printf ' ->%s\n' "${new_list[@]}" 

出力:

->.01 
->.02 
->.03 
->.04 
->.05 
->.06 
->.07 
->.08 
->.09 
->.10 

はの起動ループ内の(または任意のプログラム)は、パフォーマンスの観点から非常に悪い考えです。できるだけ多くの外部プログラムを呼び出し、バッチでそれらにデータを渡してください。それが効率的なシェルスクリプトの鍵です。

関連する問題