如何在 bash 脚本中隐藏警告
how to hide warning in bash script
我有一个 bash 脚本,我已经使用了很长时间。它只有几行 start/stop 数据库中的一些作业。它非常简单,而且永远不会失败。去年,事实是在 12 月,所以几天前 :) 我将整个数据迁移到一台新机器上。然后我的问题开始了。
现在脚本像以前一样工作,但现在它 returns 警告。输出以下:
[oracle@SVMSLUATTIADB1 ~]$ ./batch.sh stop
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!')
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!')
Batch_Executer_1 [NOT OK]
Batch_Executer_2 [NOT OK]
[oracle@SVMSLUATTIADB1 ~]$
warning中提到的这段代码是:
batch_stop()
{
for BATCH in $BATCHES
do
SQLRES=`sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
` << line 87
done
}
所以问题是如何avoid/hide这个警告。这并不重要,脚本可以正常工作,但警告会干扰视图。我看到之前我有 bash 版本 3.2.25,但现在是 bash 4.1.2。
我尝试修改我的代码并重定向输出:
{SQLRES=`sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
` } 2>/dev/null
但没有帮助:(
警告是由无效的 here document 语法引起的。即第二个限制字("!"
)缺失。
另外,不要在命令替换中使用反引号。请改用 $(...)
语法,因为它更具可读性,并且可以嵌套。
固定版本:
SQLRES=$(sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
!
)
请注意,此处文档以仅包含限制词(尤其是感叹号)的一行结尾。所以不允许缩进第二个限制字,例如
我有一个 bash 脚本,我已经使用了很长时间。它只有几行 start/stop 数据库中的一些作业。它非常简单,而且永远不会失败。去年,事实是在 12 月,所以几天前 :) 我将整个数据迁移到一台新机器上。然后我的问题开始了。 现在脚本像以前一样工作,但现在它 returns 警告。输出以下:
[oracle@SVMSLUATTIADB1 ~]$ ./batch.sh stop
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!')
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!')
Batch_Executer_1 [NOT OK]
Batch_Executer_2 [NOT OK]
[oracle@SVMSLUATTIADB1 ~]$
warning中提到的这段代码是:
batch_stop()
{
for BATCH in $BATCHES
do
SQLRES=`sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
` << line 87
done
}
所以问题是如何avoid/hide这个警告。这并不重要,脚本可以正常工作,但警告会干扰视图。我看到之前我有 bash 版本 3.2.25,但现在是 bash 4.1.2。
我尝试修改我的代码并重定向输出:
{SQLRES=`sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
` } 2>/dev/null
但没有帮助:(
警告是由无效的 here document 语法引起的。即第二个限制字("!"
)缺失。
另外,不要在命令替换中使用反引号。请改用 $(...)
语法,因为它更具可读性,并且可以嵌套。
固定版本:
SQLRES=$(sqlplus -S "/ as sysdba" << !
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE);
!
)
请注意,此处文档以仅包含限制词(尤其是感叹号)的一行结尾。所以不允许缩进第二个限制字,例如