【发布时间】:2016-06-26 08:11:35
【问题描述】:
我有一个在 Bash shell(使用 Red Hat Linux)中执行时运行良好的脚本,但是在使用 ksh 执行此脚本的 Solaris 10 (DB) 服务器上,这个相同的脚本会失败。该脚本基本上从文件中逐行读取并执行存储过程(在 Oracle 中)。下面是我的脚本:
#/bin/sh
for i in $(cat subscriber.txt); do
SUBSCRIBER_ID="'$i'"
sqlplus -s myuser/myuser <<EOF
execute delete_learnings($SUBSCRIBER_ID);
commit;
EXIT
EOF
done
我得到的错误是:
./removeLearnings.sh: syntax error at line 3: `$' unexpected
知道可能出了什么问题吗?我应该将脚本更改为具有ksh 吗?我无法在这台机器上调试,因为它是客户环境(我无权访问)。
【问题讨论】:
-
Solaris
/bin/sh不符合 POSIX 标准,并且无法识别$(…)表示法 — 除非您有 Solaris 11。请注意,您没有使用ksh; shebang 说#!/bin/sh而不是#!/bin/ksh。
标签: linux bash shell solaris ksh