我遇到了这个问题,我无法理解。
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
第二行中的我的FILE_PROPERTIES没有像我期望的那样改变,并且在文件中找不到异常。 有人知道那是为什么吗?
或者,以更一般的方式,如何在``语句中调用变量,以便将其转换为输出?我试过没有{},没有任何运气。
答案 0 :(得分:1)
你这样做的方式应该有效。例如,以下内容应该(尝试)访问info.txt
和something_else.txt
。请注意,两个echo
命令是相同的。
#!/bin/sh
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
FILE_PROPERTIES="something_else.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
一个可能的问题是,如果文件名包含空格,它将在grep
命令中显示为两个参数。您可以通过使用引号来避免这种情况(无论如何都不是一个坏主意)。 (在这种情况下不需要括号,但也有不错的主意。)
echo `grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"`
此外,大多数现代shell支持$(...)
语法,它比反引号形式更好(一方面,它可以嵌套):
echo $(grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2")
最后,echo
可能没有必要,除非您确实需要echo
处理空白区域。您可以尝试这样做:
grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"
(我还没有测试过所有这些命令,所以请注意拼写错误。)