如何将行尾变量传递给 bash 中其他应用程序的标准输入?

如何将行尾变量传递给 bash 中其他应用程序的标准输入?

有没有一种(简单的)方法可以将行尾变量传递给 BASH 中的其他程序?请考虑以下示例:

flist=$(ls -l)
echo $flist

echo会将所有行尾替换为空格,因此我的输出将与变量的内容不同。其他示例:

echo $flist | grep myfile.txt

此命令无法按预期工作,仅输出有关 的信息myfile.txt。如何打印包含 的行myfile.txt


以下是一种解决方案:

cat << EOF | grep myfile.txt       
$flist
EOF

有没有不那么丑的东西?

答案1

问题不是出在echo,而是 shell。尝试使用双引号:

echo "$flist" | grep myfile.txt

应该可以正常工作。

相关内容