首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
### Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:**$n**。**n** 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 以下实例我们向脚本传递三个参数,并分别输出,其中 **$0** 为执行的文件名(包含文件路径): 实例 ```bash #!/bin/bash echo "执行的文件名:$0" echo "第1个参数:$1" echo "第2个参数:$2" echo "第3个参数:$3" echo "第4个参数:$4" ``` 那么下面我们来运行该脚本: bash test.sh 输出如下: ```bash magento@~/shellscript$ ./test.sh a b c d 执行的文件名:./test.sh 第1个参数:a 第2个参数:b 第3个参数:c 第4个参数:d ``` ------------ ### 系统级的参数变量 | 参数处理 | 说明 | | --- | --- | | $# | 传递到脚本的参数个数 | | $* | 以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 | | $$ | 脚本运行的当前进程ID号 | | $! | 后台运行的最后一个进程的ID号 | | $@ | 与$\*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 | | $- | 显示Shell使用的当前选项 | | $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 | 代码示例: ```bash #!/bin/bash # author:xiaofeng echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*"; ``` 执行该脚本: bash test.sh a b c # 向脚本传递三个参数,分别为:a b c 输出结果: ```bash 第一个参数为:a 参数个数为:3 传递的参数作为一个字符串显示:a b c ``` **说明** $* 与 $@ 区别: 相同点:都是引用所有参数。 不同点:当使用双引号时。 假设在脚本运行时写了三个参数 1、2、3, 则 " * " 等价于 "1 2 3"(传递了一个参数), 而 "@" 等价于 "1" "2" "3"(传递了三个参数)。 为了测试上面的区别,我们写一个脚本来说明: ```bash #!/bin/bash # author:xiaofeng # $*与$@的区别 echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done ``` 执行该脚本: bash test.sh a b c # 向脚本传递三个参数,分别为:a b c 输出结果: ```bash -- $* 演示 --- a b c -- $@ 演示 --- a b c ``` 可以看到 $*被当作一份数据,即一个字符串"a b c",循环只执行了一次,而$@是把参数当成了多个数据,真正执行了循环。 ------------ **小结:** 本节课为大家介绍了如何向shell脚本中传递参数,以及如何在脚本中获取参数。后面讲解的系统级的参数变量,在平时我们写shell脚本中,对于参数的获取和控制等都有很大的作用,大家在shell脚本中也会经常看到他们的身影。
上一篇:
shell编程-变量和字符串
下一篇:
shell编程-流程控制
该分类下的相关小册推荐:
Go 组件设计与实现
Go Web编程(下)
Go开发权威指南(上)
深入浅出Go语言核心编程(四)
Go Web编程(中)
Go进阶之分布式爬虫实战
Go-Web编程实战
深入浅出Go语言核心编程(八)
Go Web编程(上)
GO面试指南
深入浅出Go语言核心编程(三)
Go开发权威指南(下)