UNIX & LINUX Shell编程:参数传递与shift命令

需积分: 1 1 下载量 164 浏览量 更新于2024-09-20 收藏 421KB PDF 举报
"LINUX与UNIX SHELL编程指南第20章介绍了如何向脚本传递参数,包括使用$1-$9变量、shift命令、getopts以及它们在处理脚本选项中的应用。" 在LINUX和UNIX环境中,编写shell脚本时,经常需要处理用户传递的参数。这些参数可以是命令执行时的选项或者需要操作的数据。本章重点讲解了如何有效地管理和处理这些参数。 `shift`命令是shell中用于处理参数的关键工具。当脚本接收到多个参数时,`shift`会将参数列表向前移动一位,即将$1的值变为$2,$2变为$3,以此类推,直至所有的参数都被处理。这样做的好处是允许脚本在处理完一个参数后继续处理下一个,而不会丢失后续的参数。例如,一个简单的脚本可以通过`while`循环和`shift`来遍历并打印所有参数。 此外,`getopts`命令则更进一步,它允许脚本解析带有选项的参数,特别是那些遵循标准的"命令 选项 文件"格式的参数。`getopts`可以处理带有短选项(单字符)和长选项(多字符)的参数,并且可以检查选项的有效性。这在需要控制多个命令选项时非常有用。 脚本示例中,展示了如何使用`shift`和`getopts`处理不同的选项,比如转换文件大小写的例子。在这个例子中,用户可以通过`-l`选项将文件名转为小写,通过`-u`选项转为大写。脚本首先检查是否有足够的参数,然后使用`getopts`解析选项,最后根据选项值(`-l`或`-u`)配合`tr`命令进行文件名的转换。 在处理命令行参数时,`$#`变量表示传给脚本的参数总数,而`$0`则是脚本本身的名字。因此,`$#-2`可以用来获取除脚本名之外的参数个数,这对于处理最后一个参数(通常是文件名)特别有用。例如,如果需要获取最后一个参数,可以使用`eval echo $$#`或`shift 'expr $#-2'`。 理解和熟练掌握`shift`和`getopts`命令是编写高效shell脚本的关键,它们能够帮助开发者更灵活地处理命令行参数,提高脚本的可读性和实用性。