问题标签 [shopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3345 浏览

bash - mac vscode bash:shopt:globstar:无效的shell选项名称

在 Mac 上运行 vscode。我更新了 Mac bash 版本,正如你所见,内置的 vscode 终端显示的 bash 版本与 Mac 终端相同。当我获取 .bash_profile 时,我invalid shell option name在 vscode 终端中收到错误消息。这是什么原因造成的?

FWIW - Terminal > Integrated > Shell: Osx 设置为bin/bash,如果这不明显的话。而且,我的 SHELL 变量是一样的。

在此处输入图像描述

0 投票
1 回答
110 浏览

perl - File::Globstar 不适用于某些模式

我正在尝试使用 File::Globstar 模块递归搜索文件。 https://metacpan.org/pod/File::Globstar#EXAMPLES

.但是,当路径包含 a或 a时,文档中给出的某些模式对我不起作用_

例如,当我执行以下任一操作时,搜索为空:

或者

但是,当我避免使用**.

难道我做错了什么?

0 投票
1 回答
34 浏览

if-statement - 需要帮助将命令组合到脚本中以在 Ubuntu 中运行

我有一堆需要转换为 AC3 的 DTS 音频视频文件。我找到了可以完成任务不同部分的命令,但我不确定如何将它们组合在一起以制作一个有效的脚本。我找到了以下脚本,可以将我所有文件中的音频转换为 AC3,但我希望它只将 DTS 音频文件转换为 AC3。脚本如下。

我还发现这个命令将返回 mkv 文件使用的音频编解码器类型。

所以我想知道如何将两者结合起来创建一个脚本来做我想做的事情。我猜我可以在脚本开头使用 ffprobe 添加一个 if 函数?像这样的东西...

这有什么问题吗?自从我在高中玩图形计算器以来,我就没有写过脚本,因为我很无聊,所以任何帮助都将不胜感激。

0 投票
1 回答
411 浏览

bash - 已解决:Catalina bash shopt direxpand 丢失

我是来自 Windows 和 Linux 的 macOS 新手。我想使用 bash 并找到了如何在 Catalina 上升级 bash,现在的版本:

GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0),还安装了coreutils。

我正在尝试在 .bashrc 中设置 direxpand (在 *nix 变体中按预期工作): shopt -s direxpand

但是当 .bashrc 被获取时,我得到一个错误:

-bash: shopt: direxpand: invalid shell option name

上网查了几个小时也没找到答案,有大神帮忙吗?

更新 28/07/20 14:08 GMT

有趣的是,在发布之前遵循其他建议,我用 brew 安装了 bash,并且必须将我的 shell 设置/usr/local/bin/bash为终端应用程序才能使用它。

所以输出bash --version

GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0)

但是echo $BASH_VERSION给出:

3.2.57(1)-release

所以有什么不对吗?

此外,运行的输出shopt不显示 direxpand。

格林威治标准时间 28/07/20 20:00 已解决

对于任何有类似问题的人,这就是我发现的。

与 Catalina 一起安装的 bash 不包括我在 linux 中拥有的相同 shell 选项。

完整的解决方案是使用 brew 安装 coreutils 和 bash: brew install coreutils bash

然后将新版本的 bash 添加到 shell: sudo vi /etc/shells添加/usr/local/bin/bash

然后更改您的用户外壳: chsh -s /usr/local/bin/bash

然后在终端首选项 > 常规 > shells open with > command (complete path) 添加新的 bash/usr/local/bin/bash

之后shopt -s确认 direxpand 现在是一个选项,并且我的 .bashrc 按预期工作。

0 投票
1 回答
93 浏览

ftp - lftp remove 的负模式匹配

GitHub 操作中,我想在部署新包后从 FTP 服务器中删除旧包文件。为了实现这一点,我想

  1. 部署新包
  2. 解析 ( 等) 的main-\*.js哈希polyfills-\*.js
  3. 删除所有匹配的文件,除了具有新哈希的文件

对于 (3),我打算将 lftp 与mrm main-*.!(328276e83108ad3616fd).js. 然而,这似乎与 lftp 的预期模式不匹配。Shopts exglob 在父 shell 中被激活,但我担心这对 lftp 没有影响。

任何有关如何实现上述目标的提示都将受到高度赞赏。谢谢!

0 投票
1 回答
110 浏览

bash - 当包含在函数中时,bash extglob 模式匹配会中断

这有效

这会返回一个错误

我错过了什么,这将允许我在函数中使用它?