根据 grep 响应为变量赋值

assign a value to a variable basis on grep response

我需要检查字符串中的子字符串。如果存在则将一些值分配给 FILE 变量,如果不存在则将一些其他值分配给相同的 FILE 变量。

下面是我试过的:

FILE="$(hostname -f | grep ".dev." &&  echo "data.txt.pp" || echo "data.txt")"; echo $FILE

但是在 $FILE 变量的输出中:

hostname.corp.com data.txt.pp

我看到主机名也被打印出来了。我只想要 data.txt.ppdata.txt。如果主机名中有 .dev.,那么我希望 FILE 变量为 data.txt.pp,否则它应该有 data.txt。我做错了什么?

添加-q

hostname -f | grep -q "\.dev\." && echo "data.txt.pp" || echo "data.txt"

避免使用大写变量,它们保留供系统使用