- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
打开extglob,我想匹配一个变量
*( )x*
(在正则表达式中:/^ *x.*/
)
这个:
main(){
shopt -s extglob
local line=' x bar'
case "$line" in
*( )x*) ;;
*) ;;
esac
}
main "$@"
给我一个语法错误。删除 extglob 括号或将 shopt -s extglob
移到 main
外部范围,都可以解决问题。为什么?为什么 shopt -s extglob
命令需要在外面?
最佳答案
bash 必须解析该函数才能创建它,并且由于您使用的扩展 glob 语法通常是无效的,它无法解析该函数,除非 extglob 在创建该函数时打开.
最终结果:extglob 必须在函数声明时和函数运行时都在和上。函数中的 shopt -s extglob
行处理第二个要求,但不是第一个。
顺便说一句,这在其他一些地方可能会成为问题。例如,如果您有一个 while
或 for
循环,bash 需要在开始运行之前解析整个循环。因此,如果循环中的某些内容使用了 extglob,则必须在循环开始之前启用它。
关于bash - 使用 extglob 的案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912289/
鉴于这些文件: $ ls file1 file2 file21 file3 fileFoo 我期待这种通配模式(启用 extglob 的 bash): $ ls file?({1..2}|Fo
我正在尝试使用参数扩展来转义括号。虽然如果我启用了 extglob,但以下代码不起作用: #!/usr/bin/env bash shopt -s extglob foo='file(2)' foo=
打开extglob,我想匹配一个变量 *( )x* (在正则表达式中:/^ *x.*/) 这个: main(){ shopt -s extglob local line=' x bar'
假设我有以下目录结构 ./testdir ./testdir/a.c ./testdir/b.c ./testdir/testdir2/ ./testdir/t.tar 假设我的 CWD 是 test
我想将正则表达式转换成 glob 我在看 jakarta oro但我找不到适合我需要的方法。它编译正则表达式并返回其等效的 glob 都是Type-3文法,理论上应该可以。 不幸的是,我在使用 JDK
我有以下 Dockerfile FROM python:3.9-slim-buster ## DO SOMETHING HERE RUN /bin/bash -c shopt -s extglob &
我以为我理解了可选 的用法?(pattern-list) 在 bash (当 extglob shell 选项打开时)并且默认在 ksh .例如在 bash : $ shopt -s extglob
我刚刚在这里发现了 bash extglob shell 选项:- How can I use inverse or negative wildcards when pattern matching
代码 shopt -s extglob cp -r !(Backups.backupdb) /home/masi/Documents/ cp -r !(Applications.noindex) /h
我在 Debian 8.1、GNU bash、版本 4.3.30(1)-release (x86_64-pc-linux-gnu) 和具有 500 GB SSD 和 8 GB 闪存的 Lenovo G
如果 glob */ 只匹配目录,那么逻辑上 extglob !(*/) 应该匹配非目录;但这不起作用。这是一个错误还是我遗漏了什么?这适用于任何 shell 吗? 测试1证明*/有效 $ cd /t
问题 当在 subshell 中设置 'extglob' 选项时,Bash 脚本的执行失败并显示以下错误消息: /tmp/foo.sh: line 7: syntax error near unexp
在某些脚本中,我想使用当前文件夹中的文件夹名称。我想获取文件夹名称,这里我只会把有问题的部分放在例子中。如果我从终端运行它,我会得到: $ for D in */; do echo ${D%%+(/)
我正在通过自制软件安装星舰,但出现此错误: Permission denied @ apply2files - /usr/local/lib/node_modules/expo-cli/node_mo
我是一名优秀的程序员,十分优秀!