linux - 如何在 bash for 循环中跳过带有注释(# 空格)的行

标签 linux bash unix

<分区>

使用以下代码:

#!/bin/bash
export LC_ALL=C

for input_file in $(<inputflist.txt)
do
    case "$input_file" in \#*) continue ;; esac
    echo $input_file

done

inputflist.txt 包含以下内容:

# foo.txt
bar.txt

我希望它只打印最后一行 bar.txt 但它打印的是:

foo.txt
bar.txt

正确的做法是什么?

最佳答案

这应该有效:

while IFS= read -r line; do
   [[ $line =~ ^[[:blank:]]*# ]] && continue
   echo "$line"
done < inputflist.txt

输出:

bar.txt

关于linux - 如何在 bash for 循环中跳过带有注释(# 空格)的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386216/

相关文章:

带 screen 的 bash 脚本

linux - 显示未登录的用户进程 linux bash 脚本

linux - 像 ncftp 这样的 Bash 选项卡补全?

c - 写入该文件时来自单个文件的多个缓冲输入流?

json - 获取 JSON 文件中的最后一个元素

linux - 使用grep解析数据

unix - 使用本地环境中的变量执行单行 ssh 命令

linux - 为几个用户验证 "su"的 Bash 脚本

linux - 如何按特定列对 CSV 文件进行排序?

linux - Linux中多核处理器从实模式到保护模式的转变