Sam*_*rvb 0 linux bash shell ksh solaris
我有一个在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
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
./removeLearnings.sh: syntax error at line 3: `$' unexpected
Run Code Online (Sandbox Code Playgroud)
知道可能出了什么问题吗?我应该更改脚本ksh吗?我无法在这台机器上进行调试,因为它是一个客户环境(我无法访问).
问题是$(...)符合POSIX但不受/bin/shSolaris 10及更早版本的旧版Bourne shell支持的构造.
您可以替换shebang来调用符合Solaris POSIX的shell:
#!/usr/xpg4/bin/sh
Run Code Online (Sandbox Code Playgroud)
或使用此遗留语法(少推荐):
for i in `cat subscriber.txt`; do
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |