shell-执行成功的命令放在function里会失败,为什么?

脚本t.sh如下,执行成功

#!/bin/bash

source ./env.sh


    ssh -i ${KEY} ${SLAVE_IP} << exe_cmd

    cd /usr/local
    rm -rf nestdb_master
    exit
    exe_cmd

    echo done

脚本t2.sh如下,执行失败

疑问:为什么同样的语句,放在function里面会失败??应该如何解决??

修改为如下这样,把exe_cmd前面空格删掉,就执行ok

 为啥必须顶格写才能识别??

后来,搜到了答案,原来shell里面<<符号是一种特殊的重定向,有个专有的名字叫here document,它有自己的语法格式,用法如下:

cmd  << delimeter

    xxxxx

delimeter

语法规定了这里的delimeter必须顶格写,前后加空格,tab都不行的。原来如此啊。

猜你喜欢

转载自www.cnblogs.com/liurong07/p/12570284.html