使用 bash 时如何循环
how to loop with while using bash
我的问题是我必须计算文件夹 (Name) 中包含名称 (Stefano) 公共部分的文件的数量,并且对于每个名称,我都想将名称与计数的数量相呼应。
因此文件夹中文件的名称将类似于:
Stefano.A1
Stefano.B2
Stefano.H3
我遇到的问题是如何回显 files.Because 它给了我错误:
ls Stefano* | wc -l: syntax error in expression (error token is "Stefano* | wc -l")
这是脚本
i=1
while [ $i -le $(ls Stefano* | wc -l) ]; do
echo "Stefano*${i}"
(i++)
done
在BASH你可以做:
i=1
for f in Stefano*; do
echo "${f}${i}"
((i++))
done
使用 for 循环做一些更简单的事情怎么样。像
for file in Stephano*; do (i++); done
find 为您打印出名字:)
find -name "*Stefano*"
我现在明白你想要什么了...你想让 $i -le $(ls Stefano* | wc -l)
为你的 while 循环工作,所以执行以下操作:
i=1
while [ $i -le $(cd && ls Stefano* | wc -l) ]
do
echo "Stefano*${i}"
((i++))
done
我添加了 cd
以便您可以从您所在的任何目录执行脚本,而无需实际将您从当前目录移出。
我的问题是我必须计算文件夹 (Name) 中包含名称 (Stefano) 公共部分的文件的数量,并且对于每个名称,我都想将名称与计数的数量相呼应。 因此文件夹中文件的名称将类似于:
Stefano.A1
Stefano.B2
Stefano.H3
我遇到的问题是如何回显 files.Because 它给了我错误:
ls Stefano* | wc -l: syntax error in expression (error token is "Stefano* | wc -l")
这是脚本
i=1
while [ $i -le $(ls Stefano* | wc -l) ]; do
echo "Stefano*${i}"
(i++)
done
在BASH你可以做:
i=1
for f in Stefano*; do
echo "${f}${i}"
((i++))
done
使用 for 循环做一些更简单的事情怎么样。像
for file in Stephano*; do (i++); done
find 为您打印出名字:)
find -name "*Stefano*"
我现在明白你想要什么了...你想让 $i -le $(ls Stefano* | wc -l)
为你的 while 循环工作,所以执行以下操作:
i=1
while [ $i -le $(cd && ls Stefano* | wc -l) ]
do
echo "Stefano*${i}"
((i++))
done
我添加了 cd
以便您可以从您所在的任何目录执行脚本,而无需实际将您从当前目录移出。