我们有一个简单的shell脚本:myTest.sh,内容如下:
#!/bin/sh
################### file begins########################
. ./backupConfig.p.properties
echo "success"
################### file ends########################
backupConfig.p.properties内容如下:
####################################### file starts ########################
# Prod database connection details
database_env="OXDB”
### <some comments> ####
softLocation=/opt/apps/ibm/
### <some comments> ####
tablesList="Tab1 Tab2 Tab3"
### <some comments> ####
####################################### file ends ########################
问题是每当我们尝试运行 shell 脚本时,它总是抛出错误:
$ sh myTest.sh
./backupConfig.p.properties: line 11: Tab1: command not found
success
我们尝试删除上面和下面行中的注释,我们检查了这一行中的空格 - 没有任何帮助解决问题。唯一有效的是,我们从当前位置剪切了该行并在下面粘贴了 3 行,然后它就成功了。有人可以帮助解释为什么会出现此错误以及为什么更改行位置有效吗?
答案1
事实证明,问题是 database_env 行末尾的冒名顶替者双引号。 shell 看到开头的双引号,然后是一个以
氧化数据库”
然后是换行符,更多文本,最后以tablesList行上预期的开头引号“结束”。
除了让另一双眼睛看着它之外,对于将来出现此类错误的一个有用提示是密切关注错误消息之前的文本;在这种情况下,Tab1
当作者打算将其作为变量赋值时,shell 将其视为要执行的命令。