Bash
如何獲取內聯文本
當您線上創建教程供人們在單個終端中使用時,有時最好獲取內聯程式碼……但是這些都沒有像我預期的那樣工作。我希望
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.
這在 4.0 之前的版本中不起作用
bash
(例如,bash
macOS 上的預設版本是 3.2.57(1))。4.0 版有一個錯誤修正:
修復了導致“。”的錯誤。無法從非正常文件(例如設備或命名管道)讀取和執行命令。
(來自https://tiswww.case.edu/php/chet/bash/CHANGES)
source
(或)在您將其與程序替換一起使用時讀取的文件.
不是正常文件,因此它會觸發 4.0 版中修復的錯誤。最新版本是目前版本 5.0.7(1),您的程式碼可以按預期工作。