2014-02-05 162 views
0

我有一个脚本,它接受来自0-1的一个数字作为其选项之一。我想测试这些不同的设置做什么,所以我想循环所有这些。我想生成的数字与此:通过脚本设置循环执行

for ((i=0; i <= 10; i += 1)); do echo "scale=1; ${i}/10"| bc; done 

然而,当我尝试这个bc不评估scale=1; ${i}/10它是采取通过设置之前,所以我最终使用的scale=1; ${i}/10而不是实际的数字我想:

for ((i=0; i <= 10; i += 1)); do Myscript --input testdata --setting "scale=1; ${i}/10"| bc; done 

回答

2

你需要,如果你w至命令替代echo "scale=1; ${i}/10" | bc蚂蚁将它作为文字文本:

for ((i=0; i <= 10; i += 1)); do 
    Myscript --input testdata --setting $(echo "scale=1; ${i}/10"| bc) 
done 

然而,这将是更容易做到以下几点:

for i in 0 0.{1..9} 1; do 
    Myscript --input testdata --setting $i 
done 
2

试试这个循环:

for ((i = 0; i <= 10; i++)); do 
    Myscript --input testdata --setting "$(bc -l <<< "scale=1; ${i}/10")" 
done