尝试fish shell,所以我正在翻译我的 bash 函数。问题是,在一种情况下,我使用 bash 正则表达式来检查字符串是否与正则表达式匹配。我不知道如何将其翻译成鱼。
这是我的例子。
if [[ "$arg" =~ ^[0-9]+$ ]]
...
- 我查看了sed,但我没有看到一种方法让它根据正则表达式是否匹配来设置其退出状态。
- 我考虑委托给Ruby,但同样,根据匹配设置退出状态需要让它变得非常丑陋(见下文)。
- 我考虑委托回bash,但尽管尝试了三四种方式,但从未得到匹配。
那么,*nix 中有没有办法检查字符串是否与正则表达式匹配,所以我可以将它放入条件中?
这是我目前的工作,但我不满意:
# kill jobs by job number, or range of job numbers
# example: k 1 2 5
# example: k 1..5
# example: k 1..5 7 10..15
# example: k 1-5 7 10-15
function k
for arg in $argv
if ruby -e "exit ('$arg' =~ /^[0-9]+\$/ ? 0 : 1)"
kill -9 %$arg
else
set _start (echo "$arg" | sed 's/[^0-9].*$//')
set _end (echo "$arg" | sed 's/^[0-9]*[^0-9]*//')
for n in (seq $_start $_end)
kill -9 %"$n"
end
end
end
end