问题标签 [parameter-expansion]

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 投票
2 回答
153 浏览

bash - 脚本在执行时运行,但在获取时失败

原标题:脚本来源时间接参数替换中断(zsh)

zsh 5.7.1 (x86_64-apple-darwin19.0)

GNU bash,版本 4.4.20(1)-release (x86_64-pc-linux-gnu)

我正在 Mac 上开发一个 shell 脚本,我试图让它在 bash 和 zsh 之间保持可移植性,所以数组索引是一个考虑因素。我知道我可以将 KSH_ARRAYS 设置为从 0 开始索引,但我决定在操作系统中查询正在使用的 shell 并相应地设置开始索引,这导致了下面描述的问题。

使用间接扩展是有道理的(无论如何对我来说!),这就是导致问题的原因。考虑脚本indirect.sh:

在同一目录中从命令行运行时,它工作正常:

当我获取脚本时出现问题:

我不明白为什么采购脚本会改变参数扩展的行为。

这是预期的行为吗?如果是这样,如果有人可以解释它并希望提供解决方法,我将不胜感激。

0 投票
0 回答
142 浏览

zsh - zsh 参数扩展,过滤掉与模式匹配的数组元素

什么 zsh 参数扩展可以过滤掉与模式匹配的数组元素(就像什么grep -v)?

0 投票
1 回答
68 浏览

string - "${line//END}" != "$line" - 它有什么作用

因此,我对包含 PEM 证书(其中许多)的文件进行 API 调用的结果如下:

在@user2856925 的帮助下回答这里(https://serverfault.com/a/718751)我开始工作我的脚本应该得到每个证书的到期日期。

现在虽然这东西做了我想要的,但理解它会很完美,所以我可以在其他脚本中使用它。

那么让我们来回答问题。"${line//END}" 是做什么的?// 在字符串上是什么,它正在检查 END 字是否包含在变量 line 中??!

我运行 bash -x 并看到变量 txt 被添加到下一行,直到找到 END CERTIFICATE 然后运行 ​​printf 行。所以在这条线之后txt="$txt$line\n"它又回到了那个时候??这将解释txt=""清空变量的行,以便下一个证书出现。

但是为什么我们需要 else txt="$txt$line\n"??

该脚本还会忽略证书之间的所有空格 2 个或更多或根本没有,或者如果证书格式正确,它就可以工作,这很好,我没有抱怨,但它是怎么做的?

0 投票
3 回答
48 浏览

bash - 参数扩展默认 ":=" vs "=" vs ":-" vs "-"

我已经看到在 Bourne 派生的 shell 的参数扩展中使用默认值的几种不同方法::==和. 我想知道它们有何不同。手册说,并且处理空值与和不同。但据我所知,==和== 。这是真的?:---=:-:=:=:-=-

0 投票
3 回答
172 浏览

linux - 使用 bash 创建具有增量版本的新目录

我需要以增量方式生成新目录。以下是文件夹结构:-

我想从变量中的现有目录中获取最新版本,即last=1.0.1,将值0.0.1添加到last以获得下一个版本,即next=1.0.2。这样我就可以使用mkdir manifests/$next创建一个新目录,如下所示:-

我可以使用以下命令获取具有最新版本的目录名称:-

如何将0.0.1添加到变量中,以便next=1.0.2如下所示:-

0 投票
1 回答
143 浏览

zsh - 在 zsh 别名中替换文件扩展名

我正在尝试创建一个别名,cwebp以便从 zsh 运行,它将输入图像文件转换为同名的输出图像文件,但文件扩展名为 .webp:

然后在 zsh

返回一个名为的转换文件.webp 我如何才能返回一个名为的文件hello.webp

任何帮助表示赞赏!

0 投票
2 回答
113 浏览

bash - ${i%.*} 在这种情况下做了什么?

我正在学习一些关于在 linux 终端中运行 bash 脚本的知识,特别是在转换音频视频文件的上下文中。

我在这里遇到了这个命令,这正是我想要的。但是,我想更好地理解它:

for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done

现在,这显然是一个for-loop,我得到了第一个*通配符。我明白了do。但我不太明白的是${i%.*}。具体来说,该%.*位在输出位置有什么作用?为什么不${i}.mp4改用?

0 投票
0 回答
69 浏览

bash - bash 脚本不像 shell

这是我的脚本:

aabcaa在我期望的时候输出bcaa

当我在 bash shell 上尝试相同的命令时(bash从 zsh shell 获取命令),一切都按我的意愿工作。bash --version我用和检查了版本/bin/bash --version。显然,这两个命令输出相同的东西。脚本的意外行为在 zsh shell 和 bash shell 中是相同的。

有什么问题?

0 投票
2 回答
314 浏览

bash - 如何在 bash 脚本中将日期名称转换为小写?

我通常使用以下 bash 脚本将文件重命名为星期几(例如,星期一、星期二、星期三、星期四、星期五、星期六和星期日):

有没有办法将一天的所有名称都变成小写,例如星期一、星期二、星期三、星期四、星期五、星期六和星期日?谢谢大家。

0 投票
1 回答
61 浏览

bash - 这个 bash 参数扩展语法是什么?

我以前从未见过这种+x}语法,也找不到有关它的文档。它有什么作用?