我有这个问题,我无法得到我的头。反向语句中的变量
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
我在第二行FILE_PROPERTIES不会改变像我希望它,并在文件完成没找到例外。 有人会知道这是为什么吗?
或者,以更一般的方式,我们将如何去调用``语句中的变量,以便将其转换为输出?我尝试过没有{},没有任何运气。
我有这个问题,我无法得到我的头。反向语句中的变量
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
我在第二行FILE_PROPERTIES不会改变像我希望它,并在文件完成没找到例外。 有人会知道这是为什么吗?
或者,以更一般的方式,我们将如何去调用``语句中的变量,以便将其转换为输出?我尝试过没有{},没有任何运气。
你这样做的方式应该有效。例如,以下应该(试图)访问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"`
而且,最现代的炮弹支持$(...)
语法比反引号形式更好一点(的一两件事,它可以被嵌套):
echo $(grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2")
最后,echo
可能是没有必要,除非你确实需要echo
的治疗的空白。你可能会改为试试这个:
grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"
(我没有测试所有这些命令,所以,要当心拼写错误。)
感谢您提供清晰,详尽且翔实的答案!帮助我理解发生了什么。现在正在批量生产0403-010。 – y2k 2012-01-18 16:38:04
什么环境中,这是什么? “批处理”标记用于Windows批处理文件,但这看起来不像Windows批处理语法。 – 2012-01-09 18:38:46
@CheranShunmugavel谢谢!错了,我更新了标签。 – y2k 2012-01-09 19:51:40
适用于此(bash 4.1.10)。可能依赖于shell的类型和可能的版本。 'export FILE_PROPERTIES =“info.txt”'工作吗? – 2012-01-09 20:23:26