问题标签 [brace-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.
bash - 通过echo在标量变量中扩展bash参数
标题:标量变量内的 bash 参数扩展
我有一个 bash 脚本,它在两个文件之间运行差异。如果有差异,我希望它打印 statement1 和 statement2 它们很长,所以我将它们放入变量中,但 echo 语句不会扩展参数。这可以在bash中完成吗?
该脚本似乎有效 - 它在需要查找差异时找到了差异。然而,这是它打印出来的。
我想让它说
linux - Bash 脚本:不使用 $@ 或 $* 扩展参数
使用$@
您可以对 bash 中的文件列表执行操作。例子:
脚本.sh:
然后我可以调用这个程序
该参数将扩展为多个参数,变为$list
. 但现在我想要其他参数,比如 1 美元、2 美元,而这个清单是 3 美元。所以我希望在dir1/{subdir1/*.dat,subdir2/*}
脚本内部进行扩展,而不是成为许多参数。在命令行上,您可以这样做:
并获得所需的输出,即文件列表。所以我尝试了这样的事情:
调用:
但没有成功。非常感谢有关如何将此列表扩展为脚本内的变量的一些帮助!:)
编辑:所以下面的答案给出了使用这些命令的解决方案:
但是出于好奇,是否仍然可以将字符串传递dir1/{subdir1/*.dat,subdir2/*}
给find
脚本内的命令(或任何具有相同目的的命令),而不使用$@
, 并以这种方式获取列表?这可能很有用,例如,如果最好将列表作为不是第一个或最后一个参数,或者在某些其他情况下,即使它需要转义字符或引用参数。
bash - 更改 bash 大括号扩展中的分隔符/分隔符
前提
我意识到这个问题已经存在,但解决方案实际上并没有改变分隔符。我想知道是否无论如何要更改分隔符,或者是否有人知道它的位置。
例子
假设我需要将此字符串传递给程序,用逗号分隔,因为这是程序接受的
印刷
我想要的地方
显然这只是一个简单的例子。
我试过的
什么都没有,因为我不知道在哪里可以找到这个分隔符,尽管我已经进行了相当广泛的搜索
也作为一个子问题:
尝试使用其他问题的 choroba 答案将其传递给我的脚本时,会产生错误。诚然,我没有尝试很长时间
我试过了
bash - 无法在bash中将大括号扩展与参数扩展结合起来
我想用大括号扩展来回应 $1 $2 $3。但它不起作用。
扩展的顺序是:大括号扩展、波浪号扩展、参数、变量和算术扩展以及命令替换(以从左到右的方式完成)、分词和路径名扩展。
根据bash手册,大括号扩展是在参数扩展之前进行的。
所以我认为 bash 应该先进行大括号扩展${1..3}
,将其转换为echo $1 $2 $3
,然后进行参数扩展。
然而,事实是 bash 抱怨${1..3}
是一个糟糕的替代品。这是为什么?
PS:谢谢你们!你们所有的答案都很棒。但我认为
Ignacio Vazquez-Abrams 的回答更接近我想要的。
bash - create multiple subdirectory using mkdir in powershell
Is there a way I can do this in ms powershell? (w/o scripting)
I want to make multiple subdirectories at once just like in bash but when i run it in powershell it gives me this error :
At line:1 char:17
+ mkdir a\b\c\d{a,b,c,d}
+ ~
Missing argument in parameter list.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingArgument**
I had tried all of the following:
linux - Systemd ExecStart 中的 Bash 大括号扩展
以下测试在 CentOS 7.1 中进行。
test.service
在中创建以下文件/usr/lib/systemd/system/
并执行systemctl daemon-reload; systemctl restart test; systemctl status test -l
没有值的输出,因为${a}
不替换为 word hello world
,直到它echo ${a}
变为
echo $a
: 工作echo $${a}
: 工作
这$$
意味着 aa bash 中进程的 pid,但是为什么可以使用$$
这个技巧ExecStart
来获得这个词hello world
呢?
bash - 是否可以在不使用 eval 的情况下使用变量绑定进行 bash 大括号扩展?
考虑以下脚本。
这个脚本的输出是:
所需的输出是:
产生所需输出的一种解决方案是
不幸的是,eval
如果可能,我希望避免使用此解决方案。
有谁知道使用大括号扩展获得所需结果的方法,但不知道eval
?
linux - 如何使用带有大括号扩展的变量
我有四个文件:
在 linux shell 中,我可以使用:
ls {1..4}.txt
列出所有四个文件,但如果我设置两个变量:var1=1 和 var2=4,如何列出这四个文件?那是:
什么是正确的代码?
linux - Understanding bash brace expansion
I read this post: https://superuser.com/questions/304807/brace-expansion-run-several-commands-instead-of-expanding-on-one-line and tried its eval echo
way of expansion. Why are the two commands below different?
Command 1:
Result 1:
Command 2:
Result 2:
bash - 运行命令的模式扩展
知道我能够运行echo
或mv
扩展如下模式:echo {0..9}{A..Z}
. 我很想知道是否有办法做同样的事情,但要运行命令?
上面的例子不起作用,但是有一些方法可以实现(分别运行 stop、rm 和 up)?