参数处理(三)使用 for 循环读取多个参数

我们除了可以使用上一篇文章中使用到的 while 和 shift 结合的方式来处理多个参数,还可以使用 for 循环来一个接一个地处理所有的命令行参数。

#! /bin/bash

E_BADARGS=65

if [ ! -n "$1" ]
then
        echo "Usage: `basename $0` argument1 argument2 ..."
        exit $E_BADARGS
fi

index=1

echo "Listing args with \$*:"

for arg in $*
do
        echo "Arg #$index = $arg"
        let index+=1
done

echo

index=1

echo "Listing args with \"\$@\""

for arg in "$@"
do
        echo "Arg #$index = $arg"
        let index+=1
done

注意:上述脚本实例中,两个 for 循环语句中调用的变量分别为 $* 和 "$@"。在这里,$* 是没有双引号的,因为如果加了双引号,即 “$*”,其值将被扩展为包含所有位置参数的值得单个字符串,将使 for 循环仅迭代一次。

上述脚本的运行测试结果:

使用效果

本文参考自 《Linux Shell命令行及脚本编程实例详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,270评论 2 33
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,825评论 0 11
  • 1, 你一定有过晚睡的经历吧,如果有,说明你很正常。 有时候和几个朋友聊天,聊起各自的作息时间,大家通常都是在11...
    周维格阅读 9,640评论 5 10
  • PuTTy+WinSCP简直是神器; 配合Code::Blocks作为IDE环境,CodelBlocks也可以用在...
    西山十月阅读 329评论 0 0