here-string

“此处文档”作为单行命令?
here-string

“此处文档”作为单行命令?

我有这个命令在我想安装的一些软件中运行校验和: echo "85762db0edc00ce19a2cd5496d1627903e6198ad850bbbdefb2ceaa46bd20cbd install.sh" | sha256sum -c 但我想将它与sha256sum命令一起使用第一的。所以我们使用heredoc来实现: sha256sum -c << EOF 85762db0edc00ce19a2cd5496d1627903e6198ad850bbbdefb2ceaa46bd20cbd install.sh EOF 但现在我希望这一...

Admin

bash 3 中管道和此处字符串的区别
here-string

bash 3 中管道和此处字符串的区别

如果我运行: IFS=':' cat <<< $(echo $PATH) 那么“:”用于分词,输出包含空格而不是“:”,但如果我运行: echo $PATH | IFS=':' cat 他们不是。 我对管道的理解a | b是它们连接 fd 1 ofa到 fd 0 of b。而我对herestrings的理解a <<< string是,它们直接将字符串写入到.fd 0 a。无论哪种情况,似乎都应该将相同的内容写入 cat 的 fd 0。 这表明这两个命令之间应该没有区别,但显然肯定有一些我误解的东西,因为这显示了差异: ...

Admin

如何在 docker exec 命令中使用带有字符串 (
here-string

如何在 docker exec 命令中使用带有字符串 (

这是我正在尝试做的事情: docker exec -it $1 /bin/bash <<< $CONTAINER_ID 但这不起作用: 输出:“docker exec”需要至少 2 个参数。 似乎 <<< 完全取代了 STDIN,忽略了 $1。是否可以仅用 <<< 替换一个参数?我知道别名,但它不适合我。我需要能够仅使用标准工具向我的同事传递一条命令,在该命令中他将仅更改最后一个变量,该变量将替换命令中心的一个或多个参数。 ...

Admin

如何将 bash < 运算符与 diff 一起使用?
here-string

如何将 bash < 运算符与 diff 一起使用?

请注意: $ diff &lt;(echo a) &lt;&lt;&lt;b diff: missing operand after '/dev/fd/63' diff: Try 'diff --help' for more information. 我知道&lt;(...)效果很好: $ diff &lt;(echo a) &lt;(echo b) 1c1 &lt; a --- &gt; b 我也知道&lt;&lt;&lt;一般情况下效果很好: $ cat &lt;&lt;&lt;a a 那么正确的调用方法是什么diff? ...

Admin

如何在此处的文档中连接结果?
here-string

如何在此处的文档中连接结果?

我有这个脚本: while read $item; do # Some bash logic here done &lt;&lt;&lt; "$({ cat /path/to/some/file; echo; })" 现在我还想用来find查找一些目录的名称,并将其与循环一起cat传递while。 换句话说,我想: cat一份文件 find一些目录 连接结果 将它们作为此处文档送入while循环 我被困在这一点上。 我想到了重复while逻辑,这不是一个好方法。我还考虑while使用函数重用循环内的逻辑。 然而,连接此处文档中的内容似乎是正确的...

Admin

什么时候有人会选择使用限制字符串 (
here-string

什么时候有人会选择使用限制字符串 (

The - option to mark a here document limit string (&lt;&lt;-LimitString) will suppress leading tabs (but not spaces) in the output. 我想知道为什么有人在使用“此处”方法处理命令时想要删除前导选项卡。是关于输出的可读性,还是关于清理输出(如果我们想将其传递给其他东西)? ...

Admin

当此处字符串有错误时如何使脚本失败?
here-string

当此处字符串有错误时如何使脚本失败?

我有一个与此类似的脚本: #!/bin/bash set -euo pipefail IFS=$'\n\t' while read -r l; do echo "${l}" done &lt;&lt;&lt; "$(cat input.txt)" echo Success 该命令cat input.txt只是这里的一个示例,以简化我的问题。 我预计如果input.txt不存在,脚本将立即退出,这要归功于set -euo pipefail.但事实并非如此,脚本成功结束并显示以下输出: cat: input.txt: No such file or...

Admin

为什么 `rm writeprotectedfile < ""` 会删除文件?
here-string

为什么 `rm writeprotectedfile < ""` 会删除文件?

当要求删除写保护文件时,GNU 命令的默认行为rm是交互询问用户是否要删除每个文件。这在很多情况下是相当不方便的。 提供交互式命令调用的一种粗略通用方法没有有意义的输入是使用here-string。我预计在这种情况下, touch wpf &amp;&amp; chmod -w wpf rm wpf &lt;&lt;&lt; "" 将导致命令被中止,即文件之后仍然存在,就像我尝试在提示符下rm wpf点击enter或时一样。ctrl+d 然而令我惊讶的是,它实际上导致文件被删除。(Ubuntu 18.04、GNU Bash 4.4.20、coreutils...

Admin

带有此处字符串的 sed 失败,但当 echo 输出通过管道传输到 sed 时成功
here-string

带有此处字符串的 sed 失败,但当 echo 输出通过管道传输到 sed 时成功

更新sed到4.4版本后,sed不会在find命令输出中用逗号替换空格,如下所示here-string: sed --version sed (GNU sed) 4.4 ls -l /tmp/test/ total 0 -rw-r--r-- 1 root root 0 Jan 9 17:25 a -rw-r--r-- 1 root root 0 Jan 9 17:25 b # NOT EXPECTED sed "s: :,:g" &lt;&lt;&lt; $(find /tmp/test/ -type f) /tmp/test/b /tmp/test...

Admin

sshpass Solaris One liner 传递命令
here-string

sshpass Solaris One liner 传递命令

我正在尝试将一个 liner sshpass 命令传递到 Solaris 盒子,但不起作用。这些是我尝试过的选项: sshpass -p "passw" ssh "[email&nbsp;protected]" -o StrictHostKeyChecking=no `at 11:04 Dec 10 &lt;&lt;&lt; touch /tmp/test_file` sshpass -p "passw" ssh "[email&nbsp;protected]" -o StrictHostKeyChecking=no 'at 11:04 Dec 10 &lt...

Admin

使用此处字符串写入 FD 时将 tee 输出到 stdout
here-string

使用此处字符串写入 FD 时将 tee 输出到 stdout

我试图在写入自定义文件描述符时输出 tee。例子: exec 4&gt;"/tmp/testfile.txt"; # open FD 4 tee -a &gt;&amp;4 &lt;&lt;&lt; "Output this to stdout" # Write to open file exec 4&gt;&amp;- # close FD 如果我执行,tee -a /proc/self/fd/4 &lt;&lt;&lt; "Output this to stdout"我可以在终端/标准标准输出中看到输出。 我正在使用 BASH 5.0.16(1)-re...

Admin

SSH tty 会话作为此处的字符串
here-string

SSH tty 会话作为此处的字符串

在我的工作中,切换用户的唯一方法是执行以下操作: sudo su - *USER* 为了以用户身份运行多个命令(在脚本或其他内容中),我使用此处的字符串和此处的文档: sudo su - *USER* &lt;&lt;&lt; 'ls ; whoami' 由于我经常必须以用户身份登录,然后通过 ssh 连接到服务器,因此我想创建一个别名来一次性完成此操作,但我不知道如何操作。我最好的猜测是这个,它不起作用(它让我登录,但我无法运行命令): sudo su - *USER* &lt;&lt;&lt; 'ssh -tty *SERVER*' 我...

Admin

这个命令到底发生了什么?
here-string

这个命令到底发生了什么?

当我使用该命令时,cat &lt;&lt;&lt; Hey &gt; text.txt text.txt我希望它在文件 text.txt 中写入“Hey”,然后显示该文件。但没有任何输出。 bash 实际上是如何解释它的? 命令及其输出: $ cat &lt;&lt;&lt; Hey &gt; text.txt text.txt $ cat text.txt $ ...

Admin

更新
here-string

更新

更新 我注意到我可以使用此命令传递 JSON command -j /dev/stdin &lt;&lt;&lt; '{"key":"value"}' 但是,如果我调用它,它就不起作用SSH。 ssh {target} 'command -j /dev/stdin &lt;&lt;&lt; '{"key":"value"}'' 看起来它是作为字符串而不是 JSON 发送的?有人知道为什么吗? 我有一个命令,需要将 JSON 字符串传递给选项,但由于某些原因,我需要使用 to 传递herestring它/dev/stdin。 例子 co...

Admin