【发布时间】:2014-07-02 05:46:04
【问题描述】:
我正在使用 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 命令分配给一个变量,它会显示“没有这样的文件或目录”
【问题讨论】:
-
什么是 SEARCH_2?没有赋值给它,它怎么能给出正确的结果?
-
在分配变量时不要使用美元符号:
search_1=12; fo_file=myfile.txt。我强烈建议你不要使用 ALL_CAPS_VARNAMES,将它们留给 shell 使用——有一天你会写PATH=5并想知道为什么你的脚本被破坏了。 -
您为什么认为分配给
SEARCH(您使用$(...))和分配给LOC(您不使用)之间存在差异?