Shell 在变量中存储echo的输出

Shell 在变量中存储echo的输出,shell,sh,Shell,Sh,我正在使用echo和sed打印两个字符串之间的字符串,但它给了我错误“没有这样的目录文件” $SEARCH\u 1=12 $FO_FILE=myfile.txt 搜索=$(头-$SEARCH\u 1$FO\u文件|尾-1 | grep b共享) LOC=echo$SEARCH\u 2 | sed的/\(.*)BShare>\(.*)要捕获命令的输出并将其分配给变量,需要使用backticks或$(…),例如 LOC=`echo $SEARCH_2 | sed 's/\(.*\)BShare>

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

$SEARCH\u 1=12
$FO_FILE=myfile.txt
搜索=$(头-$SEARCH\u 1$FO\u文件|尾-1 | grep b共享)

LOC=echo$SEARCH\u 2 | sed的/\(.*)BShare>\(.*)要捕获命令的输出并将其分配给变量,需要使用backticks或
$(…)
,例如

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

LOC=`echo$SEARCH\u 2|sed's/\(.*\)b共享>\(.*\)\(.*\)\(.*\)什么是SEARCH\u 2?没有给它赋值,它怎么能给出正确的结果?赋值变量时不要使用美元符号:
search_1=12;fo_file=myfile.txt
。我强烈建议你不要使用所有的大写变量名,把它们留到shell中使用——总有一天你会写
PATH=5
,并想知道为什么你的脚本会被破坏。为什么你认为
搜索(
$(…)
)和
LOC
(你没有)的赋值有区别?不建议使用反勾号<代码>$(…)
更易于阅读(IMO),嵌套也更容易。
<test>mystring</test> will be printed as mystring  
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'