首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历命令的输出,并同时打印索引和值。

循环遍历命令的输出,并同时打印索引和值。
EN

Stack Overflow用户
提问于 2022-08-19 05:56:13
回答 2查看 61关注 0票数 -3

我查过Looping over arrays, printing both index and value了。问题是我想循环命令的输出,而不是数组。

我想出的代码是:

代码语言:javascript
复制
array=($(seq 1 10))

for i in "${!array[@]}"; do
  printf "%s\t%s\n" "$i" "${array[$i]}"
done

或,

代码语言:javascript
复制
ITER=0
for I in $(seq 1 10)
do  
    echo ${I} ${ITER}
    ITER=$(expr $ITER + 1)
done

我想知道的是,是否有可能只在循环内(没有arrayITER)在循环之外执行?

我要找的是:

代码语言:javascript
复制
for index,value in $(seq 1 10); do
  echo $index $value
done
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-19 07:20:42

请告知您的实际需求:

代码语言:javascript
复制
01)
#!/bin/bash
index=0
for filename in $(ls -atr)
do
        indx=$(($indx+1))
        echo "Index: $indx $filename"
done

产出:

代码语言:javascript
复制
$  ./73412398.sh
Index: 1 ..
Index: 2 73412398.sh
Index: 3 .

再试一次:

代码语言:javascript
复制
for index in $(ls -atr | grep -n $)
do
 echo $index | sed "s/\([0-9]*\):/\1 /;"
done

产出:

代码语言:javascript
复制
1 ..
2 73412398.sh
3 .
票数 0
EN

Stack Overflow用户

发布于 2022-08-19 07:39:28

修改了murugesan的答案后,我的解决方案是:

代码语言:javascript
复制
for indexval in $(ls -atr | grep -n $)
do
 echo index is "${indexval%%:*}"
 echo value is "${indexval#*:}"
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73412398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档