Way*_*ood 10 unix linux bash shell
我将文件列在目录中并循环浏览它们,但我需要知道它们有多少.$ {#dirlist [@]}总是1,但是循环工作?
#!/bin/bash
prefix="xxx"; # as example
len=${#prefix}; # string length
dirlist=`ls ${prefix}*.text`;
qty=${#dirlist[@]}; # sizeof array is always 1
for filelist in $dirlist
do
substring="${filelist:$len:-5}";
echo "${substring}/${qty}";
done
Run Code Online (Sandbox Code Playgroud)
我有文件xxx001.text upto xxx013.text
但我得到的是001/1 002/1 003/1
小智 25
dirlist=`ls ${prefix}*.text`
Run Code Online (Sandbox Code Playgroud)
不创建数组,它只是一个空格分隔文件名的字符串.
你必须做
dirlist=(`ls ${prefix}*.text`)
Run Code Online (Sandbox Code Playgroud)
使它成为一个数组.
然后$ dirlist将仅引用第一个元素,你必须使用
${dirlist[*]}
Run Code Online (Sandbox Code Playgroud)
在循环中引用它们.
声明一个文件数组:
arr=(~/myDir/*)
Run Code Online (Sandbox Code Playgroud)
使用计数器迭代数组:
for ((i=0; i < ${#arr[@]}; i++)); do
# [do something to each element of array]
echo "${arr[$i]}"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43377 次 |
| 最近记录: |