Shell与SQL脚本参数传递技巧详解

5星 · 超过95%的资源 需积分: 50 18 下载量 31 浏览量 更新于2024-10-22 收藏 25KB DOC 举报
"这篇文章主要介绍了如何向shell或SQL脚本传递参数以及如何在脚本中接收这些参数。它包括了shell脚本和SQL脚本中处理参数的不同方法,以及一些常用的shell内部变量的介绍。" 在shell脚本中,向脚本传递参数是通过在命令行上直接附加参数实现的。例如,`sha.sh aa bb > a.log` 这个命令中,`aa`和`bb`就是传递给`sha.sh`脚本的参数,分别对应于shell脚本中的`$1`和`$2`。在脚本中,可以使用`echo "@a.sql$1"|sqlplus $1/$2`这样的方式将参数传递给SQL脚本,这里的`$1`和`$2`同样代表来自shell脚本的参数。 在SQL脚本中,参数的接收通常使用`DEFINE`关键字来定义变量,如`DEFINE v_str=&1`,这里`&1`表示从shell传递过来的参数。然后在SQL语句中使用这个变量,如`p_insert_log('test', '&v_str');`。注意,SQL脚本执行块需要以`/`结尾,如果只是单独的SQL语句,则不需要。 shell脚本中还有一些内部参数,它们提供了关于脚本执行状态和参数数量的信息: - `$#`:表示传递给脚本的参数总数。 - `$?`:上一个命令或脚本的退出状态,成功为0,失败为非0值。 - `$*`:所有参数组成的单个字符串,每个参数之间由空格分隔。 - `$n`(如 `$1`, `$2`等):表示第n个参数。 - `$0`:当前执行的脚本的名字。 - `$@`:所有参数列表,每个参数被双引号包围,保持它们各自的独立性。 - `$$$`:当前脚本的进程ID(PID)。 - `$!`:上一个后台命令的PID。 了解这些参数和变量对于编写和调试shell及SQL脚本至关重要,它们使得脚本能够灵活地处理用户输入,实现更复杂的任务。通过熟练掌握这些技巧,你可以创建更高效、更具交互性的自动化脚本。