鱼壳:使用管道将多行输出捕获为变量或读取

克里斯·卡罗尔

如果你

curl https://www.toptal.com/developers/gitignore/api/python

您会按预期看到该文件,并使用换行符。但是如果我

set response (curl https://www.toptal.com/developers/gitignore/api/python)
echo $response

在鱼中,换行符消失了。我看过鱼read但是

url $gitignoreurlbase/python | read response # I have also tried read -d 'blah'
echo $response

只是显示一个空白。

如何捕获多行输出?

格伦·杰克曼

替换set var (command)set var (command | string split0)

解释:

默认情况下,命令替换在换行符处分割。$ response变量是输出列表这是有据可查的

$ set var (seq 10)
$ set --show var
$var: not set in local scope
$var: set in global scope, unexported, with 10 elements
$var[1]: length=1 value=|1|
$var[2]: length=1 value=|2|
$var[3]: length=1 value=|3|
$var[4]: length=1 value=|4|
$var[5]: length=1 value=|5|
$var[6]: length=1 value=|6|
$var[7]: length=1 value=|7|
$var[8]: length=1 value=|8|
$var[9]: length=1 value=|9|
$var[10]: length=2 value=|10|
$var: not set in universal scope

幸运的是,补救措施也是如此

$ set var (seq 10 | string split0)
$ set -S var
$var: not set in local scope
$var: set in global scope, unexported, with 1 elements
$var[1]: length=21 value=|1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n|
$var: not set in universal scope

# OR
$ set oldIFS $IFS
$ set --erase IFS
$ set var (seq 10)
$ set -S var
$var: not set in local scope
$var: set in global scope, unexported, with 1 elements
$var[1]: length=20 value=|1\n2\n3\n4\n5\n6\n7\n8\n9\n10|
$var: not set in universal scope
$ set IFS $oldIFS

注意与string split0保持尾随换行符的区别

如果您可以接受$ response是行列表,但是您只想正确显示它:

printf "%s\n" $response

# or, with just a literal newline as the join string
string join "
" $respose

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将stdout和stderr捕获为鱼壳中的单独变量

来自分类Dev

将eval / source的输出通过管道传递到鱼壳中

来自分类Dev

使用 busybox sh 将多行输出捕获到 Bash 变量中

来自分类Dev

使用管道和撇号时,如何将bash命令的输出捕获到变量中?

来自分类Dev

如何使用鱼壳将数字添加到文件

来自分类Dev

如何从鱼壳中的命令替换输出中捕获换行符?

来自分类Dev

在鱼壳中使用〜/ .dircolors

来自分类Dev

如何将多行输出从管道传递到bash中的变量?不使用临时文件

来自分类Dev

如何将多行输出解析为单独的变量

来自分类Dev

鱼壳输入从子壳输出重定向

来自分类Dev

鱼壳中的间接变量引用

来自分类Dev

在鱼壳函数中,如何将stdin传递给变量?

来自分类Dev

鱼壳使用从另一个exe的评估输出来创建函数

来自分类Dev

鱼壳将无法保存我的别名

来自分类Dev

不,我无法将默认壳更改为鱼壳

来自分类Dev

如何使用JSch将多行命令输出存储到变量

来自分类Dev

将多行输出捕获为bash中的数组不起作用

来自分类Dev

如何在鱼壳中为点文件和-文件夹使用递归通配符?

来自分类Dev

如何在鱼壳中为点文件和-文件夹使用递归通配符?

来自分类Dev

如何在cygwin中使用鱼壳?

来自分类Dev

Paramiko:使用“选择”异步读取长壳脚本输出

来自分类Dev

如何从带有鱼壳的stdin中读取

来自分类Dev

在鱼壳中输入错误命令的问题及其输出

来自分类Dev

如何在鱼壳中传递文件变量的内容

来自分类Dev

将多行输出打印为列值

来自分类Dev

为鱼壳指定其他配置文件

来自分类Dev

鱼壳:检查是否为函数提供了参数

来自分类Dev

如何设置鱼壳提示为其他颜色?

来自分类Dev

鱼壳-找不到“ la”定义为“ ls -la”的位置

Related 相关文章

  1. 1

    将stdout和stderr捕获为鱼壳中的单独变量

  2. 2

    将eval / source的输出通过管道传递到鱼壳中

  3. 3

    使用 busybox sh 将多行输出捕获到 Bash 变量中

  4. 4

    使用管道和撇号时,如何将bash命令的输出捕获到变量中?

  5. 5

    如何使用鱼壳将数字添加到文件

  6. 6

    如何从鱼壳中的命令替换输出中捕获换行符?

  7. 7

    在鱼壳中使用〜/ .dircolors

  8. 8

    如何将多行输出从管道传递到bash中的变量?不使用临时文件

  9. 9

    如何将多行输出解析为单独的变量

  10. 10

    鱼壳输入从子壳输出重定向

  11. 11

    鱼壳中的间接变量引用

  12. 12

    在鱼壳函数中,如何将stdin传递给变量?

  13. 13

    鱼壳使用从另一个exe的评估输出来创建函数

  14. 14

    鱼壳将无法保存我的别名

  15. 15

    不,我无法将默认壳更改为鱼壳

  16. 16

    如何使用JSch将多行命令输出存储到变量

  17. 17

    将多行输出捕获为bash中的数组不起作用

  18. 18

    如何在鱼壳中为点文件和-文件夹使用递归通配符?

  19. 19

    如何在鱼壳中为点文件和-文件夹使用递归通配符?

  20. 20

    如何在cygwin中使用鱼壳?

  21. 21

    Paramiko:使用“选择”异步读取长壳脚本输出

  22. 22

    如何从带有鱼壳的stdin中读取

  23. 23

    在鱼壳中输入错误命令的问题及其输出

  24. 24

    如何在鱼壳中传递文件变量的内容

  25. 25

    将多行输出打印为列值

  26. 26

    为鱼壳指定其他配置文件

  27. 27

    鱼壳:检查是否为函数提供了参数

  28. 28

    如何设置鱼壳提示为其他颜色?

  29. 29

    鱼壳-找不到“ la”定义为“ ls -la”的位置

热门标签

归档