源 bash 字符串而不是文件

源 bash 字符串而不是文件

我想从命令行中的字符串而不是文件中获取 bash 函数,所以不要这样:

source file.sh

我想做类似的事情:

source `cat <<EOF
   some_func(){
   echo "nodejs version: $(node --version)"
   echo "r2g version: $(r2g --version)"
   echo "npm version: $(npm --version)"
   }
   export -f some_func;
EOF`

这有可能吗?

答案1

这些适用于 Bash 4,但不适用于 Bash 3 -

#!/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无法.从文件描述符中读取?

相关内容