gpt4 book ai didi

linux - ls 在 linux 脚本中有条件地循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:33 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的 for 循环,它将获取 ls 命令的所有输出并将每个输出放入一个变量中。到目前为止我有

for i in ls /home/svn
do
echo $i
done

但是它给了我一个错误。

最佳答案

因为ls需要执行:

for i in $(ls ...); do
echo $i
done

此外,您可能需要考虑使用 shell 通配符:

for i in /home/svn/*; do
echo $i
done

... 或 find,它允许对要查找的项目的属性进行非常细粒度的选择:

for i in $(find /home/svn -type f); do
echo $i
done

此外,如果您可以在路径段或文件名本身中使用空格,请使用 while 循环(已调整上一个示例):

find /home/svn -type f|while read i; do
echo $i
done

while 按行读取,以便保留空白。

关于 basename 的调用,你有两个选择:

# Call basename
echo $(basename $i)
# ... or use string substitution
echo ${i##*/}

解释替换:## 从字符串中删除最长的前端锚定模式,# 直到第一个模式匹配,%% 最长的反向锚定模式和 % 第一个反向锚定完全匹配。

关于linux - ls 在 linux 脚本中有条件地循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com