首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在remote ssh主机的case语句中使用heredoc

在remote ssh主机的case语句中使用heredoc
EN

Unix & Linux用户
提问于 2022-04-20 10:57:33
回答 1查看 159关注 0票数 0

我有一个要在远程服务器上运行的ssh命令列表,因此编写了这个代码段。

代码语言:javascript
复制
#!/usr/bin/env bash


echo ''
echo "WOULD YOU LIKE TO PERFORM FILES CLEANUP: "
read choice


case $choice in
  yes|YES|y|Y )

    echo ''
    echo "Enter NAME OR IP OF REMOTE HOST: "
    read ls_host


    ssh -t ${ls_host} <<- IFF
      command 1
      command 2
      command 3
    IFF;;
  * )
    echo "YOU'VE MADE A WISE-CHOISE: SCRIPT IS SKIPPING CLEANUP";;
esac

以下误差

代码语言:javascript
复制
warning: here-document at line # delimited by end-of-file (wanted `IFF')

我也试过在IFF上引用

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-04-20 11:15:30

这里-文档收集“外部”的正常语法,仅基于输入行。因此,您需要在它自己的一行上使用here-doc分隔符,并且不能将它与其他语法结合起来。另外,here-doc分隔符本身可以包含语法元素,比如那个;;.

这个应该打印wathi, hello

代码语言:javascript
复制
#!/bin/sh

cat << "EOF;;"
wat
EOF;;

case x in 
 x) cat <<-EOF
        hi, hello
        EOF
    ;;
 y) false;;
esac

注意,在第二个EOFhi, hello行之前需要硬选项卡,而且由于stackexchange将选项卡更改为空格,所以copypasting直接不能使用。这可能是也可能不是避免<<-的论点,而只是将here-doc数据推到左边的边缘。

此外,read ls_host; ssh -t ${ls_host}允许用户在输入主机名时向ssh输入选项,这可能是您想要的,也可能不是您想要的。可能也想在那里使用"${ls_host}"

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/699687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档