如何获取内嵌文本

如何获取内嵌文本

当您在线创建教程供人们在单个终端中使用时,有时最好获取内联代码......但是这些都没有像我预期的那样工作。我希望foo成为所有这些的“酒吧”。有人知道为什么吗?

#!/usr/bin/env bash

source <(echo "export foo=bar");
echo "$foo"

source <(cat <<< "export foo=bar");
echo "$foo"

source <(cat <<EOF
  export foo=bar

EOF
);


echo "$foo"

我唯一的猜测是source无法从文件描述符中读取?我也尝试使用.而不是source相同的东西。

我在MacOS上,bash --version输出:

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18) 
Copyright (C) 2007 Free Software Foundation, Inc.

答案1

这在 4.0 版之前的版本中不起作用bash(例如,bashmacOS 上的默认版本为 3.2.57(1) 版)。

4.0 版有一个错误修复:

修复了导致“.”的错误无法从非常规文件(例如设备或命名管道)读取和执行命令。

(那是来自https://tiswww.case.edu/php/chet/bash/CHANGES

source当您将其与进程替换一起使用时, ( 或)读取的文件.不是常规文件,因此它会触发版本 4.0 中修复的错误。

目前最新版本是 5.0.7(1),您的代码可以按预期工作。

相关内容