在终端中运行以下命令时,它可以正常工作,突出显示的红色和白色与下图所示的图案匹配,
$ grep -Ff file1.txt file2.txt
但是,当我将相同的命令作为文件放入脚本中pl.sh
并运行它时,它根本不会像上图那样突出显示。我不确定我做错了什么!我需要更改脚本吗?
#!/bin/bash
# Main file:
echo -n "Choose the Main Assignment File : "
read mainfile
# Compare a file
echo -n "Choose a file to compare with : "
read comparefile
# Compare two files and highlight differences
sudo grep -Ff "$mainfile" "$comparefile"
答案1
您的交互式 shell 可能有一个别名,该别名重新定义 grep 以在输出到终端设备 ex 时使用颜色。别名grep='grep --color=auto'
(可能在默认~/.bashrc
文件中定义)。
默认情况下,Bash 非交互式脚本不会扩展别名 - sudo 也不会。因此,您需要将颜色选项显式添加到 grep 中。
grep --color=auto -Ff "$mainfile" -- "$comparefile"