将echo的输出存储在变量中

时间:2014-05-14 09:03:09

标签: shell sh

我使用echo和sed在两个字符串之间打印一个字符串,但它给了我错误“没有这样的目录文件”

$SEARCH_1=12  
$FO_FILE=myfile.txt

SEARCH=$(head -$SEARCH_1 $FO_FILE | tail -1 | grep BShare)  
LOC=echo $SEARCH_2 | sed 's/\(.*\)BShare>\(.*\)<\/BShare\(.*\)/\2/g'

如果我不使用LOC =并仅使用echo,则会正确打印字符串。 示例

<test>mystring</test> will be printed as mystring  

但如果我将echo命令分配给变量,则说“没有这样的文件或目录”

1 个答案:

答案 0 :(得分:2)

要捕获命令的输出并将其分配给变量,您需要使用反引号或$( ... ),例如

LOC=`echo $SEARCH_2 | sed 's/\(.*\)BShare>\(.*\)<\/BShare\(.*\)/\2/g'`

LOC=$(echo $SEARCH_2 | sed 's/\(.*\)BShare>\(.*\)<\/BShare\(.*\)/\2/g')

原始命令的问题

LOC=echo $SEARCH_2 | sed 's/\(.*\)BShare>\(.*\)<\/BShare\(.*\)/\2/g'

是shell在这里尝试运行$SEARCH_2求值的东西(环境变量LOC设置为值echo),并将其输出传递给sed。