我有一个零数组
declare -a MY_ARRAY=( $(for i in {1..100}; do echo 0; done) )
如何设置,例如,12-25到" 1"?我试过了:
MY_ARRAY[12..25]=1
MY_ARRAY[12:25]=1
MY_ARRAY[12-25]=1
一切都行不通..
范围12-25将是从另一个文件获取的变量。 我正在寻找一个简单的解决方案,更好地不涉及循环
请帮助
答案 0 :(得分:3)
简单的单行: -
for i in {12..25}; do MY_ARRAY[$i]=1; done
有关更多操作示例,请参阅第Arrays
页。
如果开始&结束值存储在变量中,大括号扩展不起作用。在这种情况下,你应该像这样使用for循环:
$ declare -i start=12
$ declare -i end=25
$ for ((i=$start;i<=$end;i++)); do MY_ARRAY[$i]=1; done
答案 1 :(得分:2)
您可以这样使用val lines = sc.textFile("result/hebe")
case class Foo(id: String, count: Long)
val parsed = lines
.map(l => l.stripPrefix("(").stripSuffix(")").split(","))
.map(l => new Foo(id=l(0),count = l(1).toLong))
:
eval
如果您想知道eval MY_ARRAY[{12..25}]=1\;
编辑的内容,请将eval
替换为eval
。
Using eval
is generally considered as a no-no。但是这里使用eval应该是完全安全的。
另一方面,
echo
也可以重写为
for i in {1..100}; do echo 0; done
编辑:开始&amp;结束存储在变量中,这可能有效:
printf '%.1s\n' 0{1..100}
但在这种情况下,你应该真正使用循环。这个答案仅用于演示/信息。
答案 2 :(得分:2)
@Override
public void onBackPressed() {
if (mBacktwice) {
super.onBackPressed();
return;
}
this.mBacktwice = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mBacktwice=false;
}
}, 2000);
}
<强>更新强>
如果值12和25包含两个变量,那么就说declare -a MY_ARRAY=(
$(printf "%.2s" 0' '{1..11}) # 11 first zeroes
$(printf "%.2s" 1' '{12..25}) # 14 ones
$(printf "%.2s" 0' '{26..100}) # remaining zeroes
)
和From
:
To