所以这很有效,但很奇怪。我有一个shell脚本读取配置文件。他们在这里:
主脚本:
#!/usr/bin/env bash
BASE="`dirname $0`"
BASE="`cd ${BASE} && pwd`"
CONFIG="${BASE}/sync.config"
source $CONFIG
echo "$SERVER_HOSTNAME"
配置(sync.config)
SERVER_HOSTNAME="test-1"
SERVER_DOCROOT="/opt/dir/dir/"
当我这样做时,我注意到在运行脚本时会收到以下警告。
/sync.config:line 1:SERVER_HOSTNAME = test-1:找不到命令
第一个变量是空的,但第二个变量很好。为了好玩,我在第一行添加了垃圾评论:
#blah
SERVER_HOSTNAME="test-1"
SERVER_DOCROOT="/opt/dir/dir/"
同样的事情发生了,就在第1行。而这一次,脚本都可以使用这两个变量并运行良好。它只是抱怨第一行。
sync.config:第1行:#blah:未找到命令
始终是第一行。其余的文件都没问题。为什么呢?
答案 0 :(得分:5)
你可能在sync.config
的开头有一个隐形字符。尝试:
$ head -n1 sync.config | hd
例如,您可能会看到:
00000000 ef bb bf 23 62 6c 61 68 0a |...#blah.|
00000009
这表示该文件以UTF-8 BOM(字节顺序标记)开头。