linux - 如何在 block 内写入确切的字符串而不是执行它们?在 Bash 中使用 << EOF 时?

标签 linux bash fedora bash4

我有一个 configure.sh 文件,其中包含以下内容(它创建了一个带有配置的 test.sh 文件,因此我最终可以将该 test.sh 用作主要配置任务)。但是没用

cat > /var/tmp/test.sh << EOF
regex='value=(.*)'
for i in $(cat /var/tmp/test.ini);
do
    if [[ $i =~ $regex ]];
    then
        echo ${BASH_REMATCH[1]} 
        #or
        curl -v ${BASH_REMATCH[1]}
    fi
done
EOF

当执行configure.sh 时,它使test.sh 文件完全错误,例如 reged='值(.*)'

for i in 
original line1
original line1
original line1
original line1
do
  if [[ =~ ]];
  then 
  fi

done
EOF

EOF block 并没有完全按照我上面的设置来写。 EOF里面怎么写这样的字符串?

最佳答案

更改 << EOF<< 'EOF'并留下 EOF最后不变。以这种方式引用 EOF 将阻止 Bash 对 here-document 执行扩展。

关于linux - 如何在 block 内写入确切的字符串而不是执行它们?在 Bash 中使用 << EOF 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951395/

相关文章:

windows - 从 Linux 告诉 Windows(通过网络)

docker - 如何更改 Fedora Docker 容器上的区域设置?

python - 使用 easy_install 安装 statsmodels 时出现 SandboxViolation 错误

regex - Ansible:lineinfile 不断压缩我现有的行而不是向其附加文本

linux - CLI Linux 操作系统

linux - 如何使用 shell 在 linux 中逐一打印具有完整信息的所有用户列表

linux - Sqlite:比较两个数据库并更新旧的 - Linux

c++ - 如何编译程序以使其能够在 32 位 Linux 上使用 >4GB 内存?

linux - Docker - 访问主机/进程

linux - 转义 shell 脚本中的某些字符