Linux 在shell脚本中使用环境变量打印命令无效

Linux 在shell脚本中使用环境变量打印命令无效,linux,bash,shell,echo,azure-cli,Linux,Bash,Shell,Echo,Azure Cli,我需要在bash脚本文件中运行azure cli命令,为此我创建了两个脚本文件,如下所示 设置环境的步骤(environment.sh) 运行azure cli命令的实际脚本文件(azurecommands.sh) 当单独运行或在bash中使用参数时,上面的az命令可以正常工作,但是如果我使用环境变量,则命令本身的形式不正确。所以我决定打印它,这样我就可以验证正在形成的命令是什么 令我惊讶的是,输出是-n测试恢复服务器2020-07-27T12:52:21.000Z 而我的预期输出是az p

我需要在bash脚本文件中运行azure cli命令,为此我创建了两个脚本文件,如下所示

  • 设置环境的步骤(environment.sh)

  • 运行azure cli命令的实际脚本文件(azurecommands.sh)

  • 当单独运行或在bash中使用参数时,上面的az命令可以正常工作,但是如果我使用环境变量,则命令本身的形式不正确。所以我决定打印它,这样我就可以验证正在形成的命令是什么

    令我惊讶的是,输出是
    -n测试恢复服务器2020-07-27T12:52:21.000Z
    而我的预期输出是
    az postgreserver restore-g test group--restore point in time-s test server-n test recovery server

    我还确保运行environment.sh文件,如下所示:

    source environment.sh
    

    echo怎么能不打印正确的命令?我使用环境变量的方式有什么问题吗?如果是这样的话,请建议我一些其他方法,因为这些命令需要自动化。

    您是否确保环境变量中没有回车符?请使用源代码,使用
    运行第一个脚本/使用
    xtrace
    ——比如,
    bash-xyourscript
    ——是一个很好的开始。顺便说一句,
    /bin/sh
    不是bash。如果您想问的是shell,请将您的问题标记为
    sh
    ,而不是
    bash
    。(即使您的操作系统使用BASH为代码> SH ,它运行在不同的模式下,在该名称下启动时没有可用的所有特征;如果您希望所有的BASH特性都可用,请使用<代码>至少在取出
    回音后,您会发现一些与缺少引用相关的错误。(之所以
    set-x
    echo
    更好的调试方法,部分原因是它准确地反映了命令参数--
    echo“第一个参数”和“第二个参数”
    看起来完全像
    echo“第一个参数第二个参数”
    ,尽管它们完全不同)。是否确保环境变量中没有回车符?请使用源代码运行第一个脚本,并使用
    /使用
    xtrace
    ——比如,
    bash-xyourscript
    ——是一个很好的开始。顺便说一句,
    /bin/sh
    不是bash。如果您想问的是shell,请将您的问题标记为
    sh
    ,而不是
    bash
    。(即使您的操作系统使用BASH为代码> SH ,它运行在不同的模式下,在该名称下启动时没有可用的所有特征;如果您希望所有的BASH特性都可用,请使用<代码>至少在取出
    回音后,您会发现一些与缺少引用相关的错误。(为什么
    set-x
    是比
    echo
    更好的调试方法,部分原因是它准确地反映了您的命令参数--
    echo“第一个参数”“第二个参数”
    看起来与
    echo“第一个参数第二个参数”
    完全相同,尽管它们完全不同)。
    #!/bin/sh
    resource_group=$az_resource_group
    recovery_server=$az_recovery_server
    source_server=$az_source_server
    restore_time=$az_restore_time
    echo "restoring postgresql database"
    echo "az postgres server restore -g $resource_group --restore-point-in-time $restore_time  -s $source_server -n $recovery_server" 
    
    source environment.sh