Linux 在shell脚本中使用环境变量打印命令无效
我需要在bash脚本文件中运行azure cli命令,为此我创建了两个脚本文件,如下所示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
-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