gpt4 book ai didi

linux - 应该打印文件名的循环返回空行

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:23 25 4
gpt4 key购买 nike

我想编写一个非常基本的脚本,它返回当前目录中 *txt 文件的文件名。我编写了以下代码:

#!/bin/bash
FILES=$(ls *txt)

for FILE in $FILES
do
echo "$File"
done

脚本的输出是 5 个空行,而不是目录中 5 个 *txt 文件的名称。

最佳答案

这个脚本有几个问题:

  1. FILES 不是数组。
  2. 切勿以编程方式使用 ls 的输出。
  3. FILEFile 是两个不同的变量;名称区分大小写。
  4. 全大写名称保留供 shell 使用。

你的代码应该是

files=( *txt )  # ( *.txt ) would probably be cleaner
for file in "${files[@]}"; do
echo "$file"
done

但请注意,根据您的 shell 设置,如果没有匹配的文件,对 files 的分配可能会产生三种不同的结果:

  1. files 可以包含单个元素,字面上的 *txt (默认)
  2. files 可以为空(设置 nullglob)
  3. 模式匹配可能会产生错误(设置了 failglob)

关于linux - 应该打印文件名的循环返回空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44986338/

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