linux - 使用命令作为结束索引 valrible 运行 for 循环
问题描述
我想在 bash 中运行一个 for 循环,其中结束索引是命令的结果
#!/bin/bash
# Basic range in for loop
for value in {0..$(ls | wc -l)}
do
echo $value
done
但是当我运行它时,我看到:
{0..14}
解决方案
你可以使用eval
:
for value in $(eval echo {0..$(ls | wc -l)})
do
echo $value
done
seq
类似于 bash 的大括号,seq 的关键优势在于它的参数不仅可以包含算术表达式,如上所示,还可以包含 shell 变量
for value in $(seq 1 `ls | wc -l`);
do
echo ${value}
done
相比之下,大括号表示法都不接受。
seq
是一个 GNU 实用程序,可用于所有 linux 系统以及最新版本的 OSX。较旧的 BSD 系统可以使用类似的实用程序,称为jot
.
C-Style-漂亮而简单:
for ((value = 1 ; value <= $(ls | wc -l) ; value++)); do
echo ${value}
done
推荐阅读
- tensorflow - 任何想法如何解决激活函数的问题?
- nativescript - 在 nativescript 中的中继器中向布局添加类似列表视图/按钮的样式行为
- apache-nifi - HandleHttpProcessor 是否支持“CORS”(Access-Control-Allow-Origin)
- sql - INSERT (values) INTO 两个具有外键关系的表
- scala - 在 for-comp 中使用 EitherT-s 进行数据验证
- excel - 如何在保存锁定激活的情况下保存我的 Excel 文件的正确版本?
- angular - 如何在Angular 8中将标题设置为路线
- excel - 如何查找上一季度并显示为 Q3 0r Q4 等
- javascript - Python-SocketIO 服务器需要很长时间才能触发事件
- pytorch - PyTorch - `THCudaCheck FAIL file=..\aten\src\THC\THCCachingHostAllocator.cpp line=278 error=719 : unspecified launch failure` 在几个时期后?