Shell 在变量中存储echo的输出
我正在使用echo和sed打印两个字符串之间的字符串,但它给了我错误“没有这样的目录文件”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>
$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'