command-substitution相关内容

docker CMD 中的命令替换

使用: CMD ["$(pipenv --venv)/bin/python3", "main.py", "/root/uploads"] 导致 docker run 出错: 来自守护进程的错误响应:无效标头字段值“oci 运行时错误:container_linux.go:247:启动容器进程导致\"exec:\\\“$(pipenv --venv)/bin/python3\\\": stat ..
发布时间:2022-01-14 19:00:56 Python

什么时候命令替换会产生比相同命令更多的子shell?

昨天有人建议我在 bash 中使用命令替换会导致生成一个不必要的子 shell.该建议专门针对此用例: #额外的子shell产生foo=$(command; echo $?)# 没有额外的子shell命令foo=$? 尽我所能,这对于这个用例来说似乎是正确的.然而,试图验证这一点的快速搜索会导致大量令人困惑和矛盾的建议.似乎流行的智慧说所有命令替换的使用都会产生一个子shell.例如: ..
发布时间:2021-12-20 16:07:08 其他开发

Bash 中的反引号与大括号

当我去回答这个问题时,我打算使用 ${} 符号,因为我在这里见过很多次,它比反引号更可取. 然而,当我尝试 joulesFinal=${echo $joules2 \* $cpu |公元前} 我收到消息 -bash: ${echo $joules * $cpu |bc}:糟糕的替代 但是 joulesFinal=`echo $joules2 \* $cpu |公元前` 工作正常. ..
发布时间:2021-12-05 23:17:11 其他开发

如何解决错误“bash: !d': event not found"在 Bash 命令替换中

我正在尝试解析 VNC 服务器启动事件的输出,但在命令替换中使用 sed 进行解析时遇到了问题.具体以如下方式启动远程VNC服务器: address1="user1@lxplus.cern.ch"VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)" 此启动事件中产生的标准错误输出随后将被解析以提取服务器和显示信息.此时变量VNCSe ..
发布时间:2021-12-05 23:13:37 其他开发

如何避免 bash 命令替换以删除换行符?

为了加快某些 bash 脚本的执行速度,我想使用命令替换将命令的结果保存在变量中,但是命令替换将 0x0A 换行符替换为空格.例如: a=`df -H` 或 a=$( df -H ) 当我想进一步处理 $a 时,换行符被一个空格替换,所有的行现在都在一行上,这更难 grep: echo $a 避免换行符被命令替换删除的简单技巧是什么? 解决方案 不移除非尾随换行符 您正在 ..
发布时间:2021-12-05 22:54:48 其他开发

如何将命令的输出分配到数组中?

我需要将 grep 的结果分配给一个数组...例如 grep -n "搜索词" file.txt |sed 's/:.*//' 这导致了一堆带有行号的行,其中找到了搜索词. 131219 将它们分配给 bash 数组的最简单方法是什么?如果我只是将它们分配给一个变量,它们就会变成一个以空格分隔的字符串. 解决方案 要将命令的输出分配给数组,您需要在数组分配中使用命令替换.对于一般命 ..
发布时间:2021-11-18 01:24:55 其他开发

命令替换内部的bash逻辑

我在登录时会显示一个小横幅 fignow(){figlet -w $(tput cols)$(date +“%b%d,Week%V");figlet -w $(tput cols)-f univers $(date +“%H:%M");} 如果为了获得 univers 而安装了其他字体,此方法就可以正常工作,但这不是默认安装的一部分,因此我可以执行以下操作: fignow(){figl ..
发布时间:2021-04-14 20:50:13 其他开发

bash命令替换期间的空白变量

我正在执行命令替换并将结果保存到变量中.但是,命令的结果包含双引号,这导致变量为空. 运行 test ="$(java -version)" 时,我得到以下结果: openjdk版本"1.8.0_65"OpenJDK运行时环境(内部版本1.8.0_65-b17)OpenJDK 64位服务器VM(内部版本25.65-b01,混合模式) 但是运行 echo $ test 会产生空白行. ..
发布时间:2021-04-14 19:26:38 其他开发

多行,双引号字符串将触发后续的单引号命令的历史扩展,该命令将通过管道传递到该单引号

我使用的是GNU bash版本4.3.11. 说我要在文件上打印唯一的行.我正在使用这种方法,该方法在文件上效果很好: $ cat a 9 10 9 11 $ awk '!seen[$0]++' a 9 10 11 但是,如果我从stdin获得输入,在多行中使用双引号并将其管道连接到awk,则会失败: $ echo "9 > 10 > 9 > 11" | awk '!seen ..
发布时间:2020-11-16 03:40:34 其他开发

用字符串替换命令替换

是否可以按照以下方式做一些事情? echo ${$(ls)/foo/bar} 我很确定我在某个地方看到了类似的例子,但这会导致“替换错误". 我知道还有其他方法可以做到这一点,但如此短的oneliner会很有用.我错过了什么吗?还是不可能? 解决方案 语法${...} 仅允许引用变量(或位置参数)(可选)结合参数扩展 . 语法$(...) (或更可取的是,其旧式等效项 ..
发布时间:2020-09-18 22:23:54 其他开发

Bash中的反引号vs括号

当我去回答这个问题时,我将使用${}表示法,因为我已经在这里看到了很多次,所以比起反引号更合适. 但是,当我尝试 joulesFinal=${echo $joules2 \* $cpu | bc} 我收到了消息 -bash: ${echo $joules * $cpu | bc}: bad substitution 但是 joulesFinal=`echo $jou ..
发布时间:2020-09-18 20:57:11 其他开发

如何使用shell命令在GDB中设置环境变量?

我想在其环境中仅使用单个变量MyVar来运行gdb. 但是,变量的内容相当复杂,包含不可打印的ASCII,因此最好使用例如MyVar=$(python -c 'print("\xff...")'). 我有两个选择: 在运行gdb之前在bash中设置MyVar.然后在gdb内部,使用unset environment NAME单独删除所有其他环境变量(非常繁琐!). 使用un ..

从命令输出在GDB中设置环境变量

我试图在挑战中利用缓冲区溢出,该缓冲区从环境变量获取其值. 在GDB中,我知道您可以使用以下命令来设置环境变量: set environment username = test 但是我需要传递用户名变量特殊字符,因此我需要执行以下操作: set environment username= $(echo -e '\xff\x4c......') 但是该命令没有执行,用户名变量确实 ..

bash命令替换使用变量

我有一个建立了基于文件的列表中的命令,以便命令是建立在飞bash脚本。构建它的飞行意味着它被保存在一个变量。然后,我要运行该命令,输出存储在一个单独的变量。当我使用命令替换尝试运行命令,它掷骰子了。我怎样才能得到命令替换在一个变量与命令工作时可变利用管? 下面是我的脚本: #查找因为在365天旧文件数ignored_files =('文件1'文件2''文件3') path_to_examine ..
发布时间:2016-08-03 11:21:00 Linux/Unix