如何避免回声?

如何避免回声?

编辑:我意识到这与它无关$(),只是使用的结果echo *。所以我只需要一种逃避的方法echo

/etc/passwd我正在编写一个脚本,通过比较和 来检查哪些用户没有密码/etc/shadow

到目前为止我有:

cat /etc/passwd | while read -r line ; do
  user=$(echo $line | cut -d ":" -f 1)
  password=$(cat /etc/shadow | grep $user | cut -d ":" -f 2)
  echo $password
done

问题是,当我的 grep 结果是*密码字段时(所有没有密码的用户都是这种情况),似乎ls *执行了?例如:

在此输入图像描述

我很困惑为什么会发生这种情况。谁能解释一下这里发生了什么?图片底部带有加密密码的答案是预期的行为。对于没有密码的条目,我希望得到一个*.

答案1

echo "$password"

这将允许插入变量(此处为*),而无需调用 shell 全局变量。

相关内容