Bash STRING != STRING 无法与从 `ls` 拆分的字符串一起使用

Bash STRING != STRING 无法与从 `ls` 拆分的字符串一起使用

我有一个 bash 代码,它将所有文件分配到一个变量中,用空格分割字符串并像这样循环它们:

$ ls
README  db_password.example  db_username.example
files_str=$(ls)
files=(${files_str// /})

for file in "${files[@]}"; do 
  if [ "$file" != "README" ]; then 
    echo "$file is not README";
  fi; 
done;

输出:

在此处输入图片描述

我现在认为它与数据类型有关。我以为 bash 只有字符串?我想我被误导了,也许是被类似这样的来源误导了:https://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-5.html#:~:text=There%20are%20no%20data%20types,its%20reference%20will%20create%20it

但当我这样做

file=README
if [ "$file" != "README" ]; then 
  echo "$file is not README";   
fi;`

我没有得到正确的输出。那么我该如何让它工作呢ls

答案1

您可能有一个“ls”的别名来添加颜色,该别名由额外的控制字符生成,这当然会弄乱字符串比较。尝试 /bin/ls 或 ls --color=none,而不仅仅是 ls。

相关内容