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

string - 使用参数扩展字符串替换的换行符的 printf 解释

我有一个字符串:string="foo=bar boo=far rab=oof raf=oob"

我想用换行符替换字符串中的所有空格:string=${string// /$"\n"}

当我使用printf时,bash 打印:

但是,当我将命令输入错误时printf %s""$string,我得到:

有什么区别printf "%s" "$string"并且只会解释其中一个命令中的换行符printf %s""$stringprintf

0 投票
2 回答
117 浏览

bash - 为什么 ${##parameter} 总是返回 0?

假设这parameter=value是 bash 中的一个内部变量。${#parameter}当我在 bash 中尝试时,它返回一个5. 但是,例如,当我尝试时,${##parameter}或者${###parameter}它总是会0回报。为什么它不像其他情况那样说这是一个替换错误?

0 投票
1 回答
41 浏览

bash - 如何从文件名中提取一个以下划线分隔的字段?

我有一个这样的文件名列表:

REG_2016120200hourly_d01_20161202_00_00_00.nc

这个名字我想提取并放入一个变量:

1)日期20161202

这是有效的,脚本给了我20161202,我不知道为什么

2)时间步长 00

我需要取前两个零 00,我正在尝试

timestep=${filename:34:36}但这不起作用。

我有点惊讶,因为我在其他脚本中使用了相同的方法,而且我从来没有遇到过问题。

谢谢

0 投票
2 回答
39 浏览

bash - 如何在 BASH 中为单个输出应用多个参数扩展?

files=("Benjamin Johnson" "Bastin Johnson" "Bagio Johnson")

( IFS=','; echo "${files[*]/#/Mr.}"; echo "${files[*]/ /_}" )

预期结果 Mr.Benjamin_Johnson,Mr.Bastin_Johnson,Mr.Bagio_Johnson

输出结果:

Mr.Benjamin Johnson,Mr.Bagio Johnson,Mr.Bastin Johnson

Benjamin_Johnson,Bagio_Johnson,Bastin_Johnson

0 投票
1 回答
45 浏览

bash - 如何抑制参数扩展中的通配?

有没有办法抑制参数扩展中的通配?考虑*.xml在其他 xml 文件中的目录中按字面命名的文件的情况。有没有办法进行${param##*/}仅影响文件*.xml而不影响所有 xml 文件的参数扩展?

0 投票
3 回答
209 浏览

bash - 如何在 Perl 中使用 Shell 参数扩展?

我正在尝试实现 Bash 参数扩展技术来替换 Perl 脚本中文件的现有扩展名。

这是我用于替换文件扩展名的 bash 代码,它工作正常:

另一方面,我试图在 Perl 脚本中使用它system()

$a保存通过命令行参数传递的目录名称。

"syntax error near %"它随后抛出"missing right curly or square bracket within string". 错误消息中没有 EOF。

当我不使用%.*时,它只是在现有文件结束后追加.png,但不会替换。一些帮助将不胜感激。

0 投票
2 回答
114 浏览

bash - 如何将 sed 参数存储在变量中以在 BASH 中进行参数替换

我需要将一些 sed 表达式存储在一个变量中并将其替换为 sed 命令。

到目前为止,这些都不起作用:

参数扩展解释变量中的第一个 -e 参数。

-e 可以解释为存在的测试,或回显的参数。

我怎样才能防止这种情况并将其用于 sed 命令?

澄清一下,这只是一个命令的简化版本,它将包含大量带有需要在正则表达式中转义的字符的 sed 表达式,我宁愿保持原样引用的表达式,并将所有 sed 表达式转储到sed 命令作为单个变量。

如果那不可能,我将使用不同的方法,例如下面的当前答案,但是似乎应该有一些内置的 bash 方法来不预先扩展变量,而只是在使用之前将其解释为字符串在最后的 sed 命令中。

我使用的实际参数看起来像这样:

带有未知字符串

0 投票
2 回答
194 浏览

zsh - 如何提取Zsh路径中的最后一个目录?

假设我有一个包含目录路径的变量(带有斜杠):

如何"dir"使用 Zsh 的参数扩展提取最后一个目录(即)?我想避免调用外部程序(如sed)。

0 投票
1 回答
69 浏览

bash - 在bash中组合表达式和参数扩展

是否可以将参数扩展与bash中的算术表达式结合起来?例如,我可以做一个单行来评估lineNum还是numChar在这里?

换句话说,我可以根据单行表达式中另一个字符的位置来获取字符串中一个字符的位置吗?

0 投票
1 回答
82 浏览

bash - Concatenate multiple files based on similar ID in a loop

I have these files in the same folder:

I would like to combine the five files results1+results2+results3+results4+results5 for each combination, for example "1_2_4", "0.001_2_25" and "0.1_3_50". So the ouput should be:

A similar question is here (cat multiple files based on ID in filename), but I tried with no success: