我尝试做的是将用户输入作为字符串并解析字符串的一部分。我的正则表达式的结果我想保存到一个新的变量。这是我到目前为止所拥有的。
#!/bin/bash
downloadUrl="$1"
pythonFile=echo $downloadUrl | sed '/Python-[\d+.]+tgz/'
echo "$downloadUrl"
echo "$pythonFile"
这是我的结果。
sed: 1: "/Python-[\d+.]+tgz/": command expected
答案 0 :(得分:1)
您忘记在$()
中运行命令以获取命令替换。使用:
pythonFile=$(echo $downloadUrl | sed '/Python-[\d+.]+tgz/')
有关详细信息,请参阅the manual。
答案 1 :(得分:0)
sed '/Python-[\d+.]+tgz/'
不正确,因为你需要像p
这样的sed命令,无论如何它只是搜索不是真正提取部分输入文本。
您可以使用grep -oP
pythonFile$(grep -oP '/Python-[\d+.]+tgz/' <<< "$downloadUrl")
或没有-P
pythonFile$(grep -o '/Python-[0-9+.]\+tgz/' <<< "$downloadUrl")