Linux Shell 位置参数详解:从基础到实战

Linux Shell 位置参数详解:从基础到实战
Shell 位置参数(Positional Parameters)是脚本接收命令行参数的核心机制。无论是简单的传参还是复杂的选项解析,掌握位置参数都是编写专业 Shell 脚本的必备技能。本文从基础概念出发,逐步深入到实战案例,帮助你彻底理解并灵活运用位置参数。位置参数基础Shell 提供了一组名为位置参数的变量,用于存储命令行中的各个单词。这些变量从$0到$9,其中$0总是存放被执行程序的路径名(通常是脚本的完整路径)。以下脚本可以展示这些参数:#!/bin/bash# posit-param: script to view command line parametersecho" \$0=$0\$1=$1\$2=$2\$3=$3\$4=$4\$5=$5\$6=$6\$7=$7\$8=$8\$9=$9"无参数运行时,$0仍显示程序路径:[me@linuxbox ~]$ posit-param $0 = /home/me/bin/posit-param $1 = $2 = $3 = $4 = $5 = $6 = $7 = $8 = $9 =传入参数后:[me@linuxbox ~]$ posit-param a b c d $0 = /home/me/bin/posit-param $1 = a $2 = b $3 = c $4 = d $5 = $6 = $7 = $8 = $9 =访问超过 9 个参数时,必须使用展开语法${10}、${55}等。参数个数与通配符问题Shell 提供了$#变量,记录命令行参数的个数。结合通配符*使用时要特别小心:[me@linuxbox ~]$ posit-param * Number of arguments:82$0=/home/me/bin/posit-param$1=addresses.ldif...当当前目录包含大量文件时,*会展开为 82 个参数。这时就需要使用shift命令来遍历它们。使用 shift 遍历所有参数shift命令将参数列表“向下移动一位”:$2变成$1,$3变成$2,依此类推,同时$#减 1。下面的脚本循环处理所有参数:#!/bin/bash# posit-param2: script to display all argumentscount=1while[[$#-gt0]];doecho"Argument$count=$1"count=$((count+1))shiftdone执行结果:[me@linuxbox ~]$ posit-param2 a b c d Argument 1 = a Argument 2 = b Argument 3 = c Argument 4 = d文件信息程序实例利用basename和$0可以构建健壮的错误信息,使脚本改名后自动适配:#!/bin/bash# file-info: simple file information programPROGNAME="$(basename"$0")"if[[-e"$1"]];thenecho