问题标签 [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 回答
510 浏览

bash - bash expr 命令

我正在尝试制作一个 bash shell 脚本,该脚本可以将名称值对添加到文本文件中,例如TEST=true. 我正在尝试这样做,因此如果用户尝试添加一个已经存在的名称,例如TEST=false它不会让他们这样做。谁能告诉我如何使用expr命令提取字符之前的任何文本=?任何帮助将不胜感激。

谢谢

0 投票
4 回答
156065 浏览

shell - 如何执行存储在变量中的命令?

调用存储在变量中的某些命令的正确方法是什么?

1和2有区别吗?

0 投票
2 回答
283 浏览

bash - 无法在bash中将大括号扩展与参数扩展结合起来

我想用大括号扩展来回应 $1 $2 $3。但它不起作用。

扩展的顺序是:大括号扩展、波浪号扩展、参数、变量和算术扩展以及命令替换(以从左到右的方式完成)、分词和路径名扩展。

根据bash手册,大括号扩展是在参数扩展之前进行的。

所以我认为 bash 应该先进行大括号扩展${1..3},将其转换为echo $1 $2 $3,然后进行参数扩展。

然而,事实是 bash 抱怨${1..3}是一个糟糕的替代品。这是为什么?

PS:谢谢你们!你们所有的答案都很棒。但我认为

Ignacio Vazquez-Abrams 的回答更接近我想要的。

0 投票
2 回答
144 浏览

bash - 使用 '/' 的 Bash 变量扩展

在 while read line 循环中,我看到了这个变量扩展${line/device name:}。我试过用我自己的输入文件运行脚本,它只是打印出这一行。

你能告诉我这个扩展在做什么吗?

0 投票
1 回答
56 浏览

bash - 如何理解这个“bash” shell 命令

命令是:

我已经单独运行它,[ -d $x ] && echo $x只输出目录名称。是什么${1:-.*}意思?

0 投票
1 回答
480 浏览

bash - Bash:使用 {} 替换文件扩展名

我正在测试带有参数扩展的 bash 文件名替换,如下所示:如何更改 Linux shell 脚本中的文件扩展名?

但是,我似乎无法按照我的意愿进行以下工作:

给定以下文件:

我运行findflac 文件以parallel运行echo测试输出的命令。我正在尝试替换.flac.mp3.

我的输出是:

如果有什么不同,我打算使用它ffmpeg

编辑:预期输出:

编辑2:要替换文件扩展名,我可以使用:

但是,这提供了以下输出

\也许现在这是一个 ffmpeg 问题,因为如果有一个字符代替空格字符,ffmpeg 将无法找到文件。

0 投票
1 回答
741 浏览

bash - Bash 参数扩展 - 获取文件的直接父目录

我想使用参数扩展获取给定文件的直接父目录的名称,例如foogiven 。/home/blah/foo/bar.txt现在我可以用两行来做到这一点:

但我对参数扩展很陌生,所以我认为这可以优化。有没有办法只用一行来做到这一点?

0 投票
3 回答
4903 浏览

substring - 如何在 Fish shell 中提取子字符串?

我得到以下变量:

并且只想使用shell 语法/显示(斜杠)之前的部分。fish

预期结果

美国

Bash 等价物

使用 bash,我只是使用了参数扩展:

问题

我该怎么做fish

0 投票
1 回答
70 浏览

bash - 获取文件名的一部分

我尝试num23.txt仅使用一个 bash 变量来获取文件的编号。

我尝试只使用%and/运算符。它如何更改最后一个命令以仅作为输出23

0 投票
2 回答
118 浏览

bash - 如何在大括号扩展(范围)上应用参数扩展?

我想应用参数扩展(例如搜索和替换)以从大括号扩展{a..z})中删除空格。有可能的?

所以我有以下范围:{a..z}它包含所有字母,我想一次性删除空格。

这是更长的示例:

是否可以直接在范围上应用参数扩展?或者至少在一个表达式中实现它,尤其是在没有将其分配给变量的情况下?


一个示例用法是为 动态指定所有参数getopts,例如:

但是这不起作用(例如./az.sh -a -b -c),因为需要先删除该范围内的空格。