我正在编写bash脚本,它遍历我目录中的文件。 我需要从一个文件名中提取版本。
至于
grep -Po '(?<=develop.)[^_]+'
在终端中效果很好,在bash脚本中它无效。
echo $filename | grep -Po '(?<=develop.)[^_]+' # great
version = $filename | grep -Po '(?<=develop.)[^_]+' # version: command not found
档案模式
software_1.2.1~develop.3421-1_.deb
我期待输出中的3421-1
任何提示?
答案 0 :(得分:0)
需要修改:
在=
bash
周围没有空格
在STDOUT上写入变量内容的一些过程,因此您可以使用管道使其在grep
的STDIN上可用,例如echo
此处(或此处为字符串<<<
)
要将命令的输出保存在变量中,请使用命令替换$()
所以,做:
version=$(echo $filename | grep -Po '(?<=develop.)[^_]+')
虽然在这种情况下你可以在不使用双引号的情况下逃脱,但在几乎所有其他情况下,在变量扩展周围使用双引号来防止分词和文件名扩展。