问题标签 [command-substitution]
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.
scheduled-tasks - 此语句以交互方式运行,但不是从 'at' 计划的
Ubuntu headless 15.10:我正在开发的脚本将上述语句安排在“at”中。它在运行时没有执行预期的 iptables 插入任务,因为括号内的比较是错误的(我使用了一个未显示的 else 来了解这一点)。我尝试过更改零的引用...无引号、单引号和双引号。我知道 '==' 之前的值是 0,因为我在上面显示的内容之前将它插入到构造的预定命令中:
echo $(/sbin/iptables -w -L INPUT -n|grep --line-buffered -m 1 -c -w 66.128.56.213) >> /home/mydir/testfile.txt
它在文件中回显了一个简单的 0。如果我只是在括号中尝试 0 == 0,它也会计算为假。谁能明白为什么我不能比较两个零彼此相同?以及如何按照我想要的方式使我想要的语句分支:当替换的命令等于零时?它与命令行的行为不同,并且按预期正确。我的猜测是外壳差异。我尝试使用双括号。没运气。([]) 也不起作用。也不用 eq 代替 ==。
bash - 将命令替换输出流式传输到终端,不带静噪颜色
有没有办法在执行时以颜色显示命令替换的输出,同时仍将其存储到变量中?这主要用于测试/调试目的,并且输出不会正常显示。
如果我这样做:
...那么这很接近,但在某些方面不是我想要的:
- 即使命令会以其他方式向终端发出彩色输出,它也会以黑白打印。
- 输出仅在命令完成后显示,而不是在运行时流式传输。
如何在不压制颜色的情况下有条件地将输出流式传输到终端?
bash - linux如何使用动态变量
我制作了一个 shell 脚本来进行一些计算。用户输入 2 个数字:第一个数字是月份(如果需要日期是 2010 年 2 月,例如他输入 2)第二个数字是年份(如果需要日期是 2010 年 2 月,例如他输入 2010 年)
然后,我的脚本将计算从 2000 年 1 月的每一天到用户使用以下代码输入的日期所经过的天数。
编辑(我的代码中有一些愚蠢的语法错误)
因为一个月有 31 天(在我的脚本中是的,我假设每个月有 31 天)我在最后一行代码中的“dd”变量将更改 31 次。
我想知道如何在不复制粘贴公式 31 次每次更改代码的情况下做到这一点。
bash - 如何在流程替换中使用 case/esac?
我有以下行可以正常工作:
但是,当我尝试将其用作命令替换时,bash 失败并出现错误。
代码:
结果:
反斜杠没有帮助\)
。t)
语法在 GNU bash 3.2.57(t)
中有效,但在 4.3.42 中无效。
似乎使用反引号对两个版本都适用:
但是我不想使用该语法,因为它已弃用。
如何case
在上述命令替换 ( $()
) 中使用语法?
或者也许还有其他方法可以做同样的事情?
基本上是检查是否-t
已经为脚本指定了参数,如果是,则执行一些命令。
linux - 从命令的输出中设置 GDB 中的环境变量
我试图在挑战中利用缓冲区溢出,缓冲区从环境变量中获取它的值。在 GDB 中,我知道您可以使用以下命令设置环境变量:
但是我需要传递用户名变量特殊字符,所以我需要执行以下操作:
但是该命令没有被执行,并且用户名变量实际上包含我写下的内容,有人知道将特殊字符传递给环境变量的技巧吗?
find - GNU find 和更复杂的 -exec 选项参数值
这对我有用:
是
{}
,\
和 ';' 当使用任何其他语法时强制使用-exec
根本不起作用?以下更复杂的示例不起作用:
echo
这里只是为了演示。我最终计划使用类似的东西rm $TARGET_DIR/$(basename '{}')
来代替它......它只是不能那样工作(嵌套)。有任何想法吗?
git - 在 git 命令别名中嵌套反引号
我正在尝试创建一个 git 别名来显示自最后一个标签以来的所有提交。我的基础是我过去经常使用的这个 SO 答案。
目前,我正在尝试使用如下git config --global alias.*
命令:
这注册了一个名为“summary”的新“命令”,它将呈现自最后一个标签以来的所有提交消息。
但是,当我运行时git summary
,git 会抛出此错误消息:
致命:模棱两可的参数“git”:未知的修订版或路径不在工作树中。
使用 '--' 将路径与修订分开,如下所示:
'git <command> [<revision>...] -- [<file>...]'
对我来说,这看起来像git describe --tags --abbrev=0
嵌套在反引号内的内部命令没有正确评估。
我怎样才能解决这个问题?
bash - 命令替换不起作用
我正在尝试将命令的输出存储到下面的 bash 脚本中的变量,但输出显示在屏幕上而不是存储在变量中
bash - 将 Bash 赋值给变量作为命令替换和打印值输出
我想在 Bash 中实现这一点:echo $(a=1)
并打印变量的值a
我测试了eval
, $$a
, {}
,$()
但大多数时候它们都不起作用,无论是我从字面上a=1
还是在一种情况下(我不记得是哪一种)它试图执行该值。
我知道我可以做到:a=1;echo $a
但是因为我对每行一个命令很有趣(即使有时变得有点复杂)我想知道是否可以使用echo
或使用printf
linux - 当命令作为变量传递时,如何在命令替换中包含 stdout/stderr 重定向?
我有以下脚本来检测我的网络在重新启动路由器后何时恢复:
但是,在终端中运行时,它会打印:
ping: 未知主机 &>/dev/null
我使用选项(启用调试)运行脚本-x
并发现
在子shell中执行为
如何更改我的命令替换调用,以便 bash 不在输出重定向周围加上单引号?