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

时间:2017-07-08 12:41:50

标签: linux bash loops

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form novalidate>
<input type="text" placeholder="first name" required/><br/><br/>
<input type="text" placeholder="last name" /><br/><br/>
<button id="submitBtn" value="Submit">Submit</button>
</form>

脚本的输出是5行,而不是directoy中5 * txt文件的名称。

1 个答案:

答案 0 :(得分:1)

这个脚本有几个问题:

  1. FILES不是数组。
  2. 切勿以编程方式使用ls的输出。
  3. FILEFile是两个不同的变量;名称区分大小写。
  4. 保留所有大写字母以供shell使用。
  5. 您的代码应为

    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