ShellScript值传递参数
Shell传递参数
######################################摘自菜鸟教程:http://www.runoob.com/linux/linux-shell-passing-arguments.html #####################################
1、shell脚本传递参数
向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
#!/bin/bash
echo "Shell脚本传递参数学习!"
echo "执行的文件名:$0"
echo "第一个参数为$1" ##第一个参数为1
echo "第二个参数为$2" ##第二个参数为2
echo "第三个参数为$3" ##第三个参数为3
执行shellscript脚本:./bian_trans1.sh 1 2 3
2、特殊字符来处理参数
|
参数处理 |
说明 |
|
$# |
传递到脚本的参数个数 |
|
$* |
以一个单字符串显示所有向脚本传递的参数。 |
|
$$ |
脚本运行的当前进程ID号 |
|
$! |
后台运行的最后一个进程的ID号 |
|
$@ |
与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
|
$- |
显示Shell使用的当前选项,与set命令功能相同。 |
|
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
例子:
#!/bin/bash
echo "Shell脚本传递参数学习!"
echo "执行的文件名:$0"
echo "第一个参数为$1"
echo "第二个参数为$2"
echo "第三个参数为$3"
echo "传递到脚本的参数个数为:$#" ##传递到脚本的参数个数为:3
echo "传递到脚本的参数为:$*" ##传递到脚本的参数为:1 2
3
echo "脚本运行的当前进程ID号:$$" ##脚本运行的当前进程ID号:14483
echo "后台运行的最后一个进程的ID号:$!" ##后台运行的最后一个进程的ID号:
echo "传递到脚本的参数为:"$@""
##传递到脚本的参数为:1 2 3
echo "当前shell使用的选项为:$-"
##前shell使用的选项为:hB
echo "最后命令的退出状态:$?"
##0表示没有错误,其他任何值表明有错误 ##最后命令的退出状态:0
运行当前脚本:./bian_trans2.sh 1 2 3
备注:$*与$@的区别
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。
#!/bin/bash
###演示$*的效果
echo "-----\$*的演示效果----"
for i in "$*";do
echo $i
done
###打印效果:-----$*的演示效果----
1 2 3
###演示$@的效果
echo "-----\$@的演示效果-----"
for j in "$@";do
echo $j
done
###打印效果:-----$@的演示效果-----
1
2
3
ShellScript值传递参数的更多相关文章
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习
1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在 ...
- 【Qt】信号和槽对值传递参数和引用传递参数的总结
在同一个线程中 当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别: 值传递会复制对象:(测试时,打印传递前后的地址不同) 引用传递不会复制对象:(测试时,打印传递前后的地址相同) 不在同一 ...
- JAVA参数没有引用传递,只有值传递
原文章地址:http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性, ...
- Java中只有按值传递,没有按引用传递!(两种参数情况下都是值传递)
今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这 ...
- 6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递
JavaScript函数:使用关键字function定义,也可以使用内置的JavaScript函数构造器定义 匿名函数: 函数表达式可以存储在变量中,并且该变量也可以作为函数使用. 实际上是匿名函数. ...
- Java 中的值传递和参数传递
Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能 值传递:方法调用时,实际参数 ...
- Java中的值传递和引用传递
这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...
- java中方法的参数传递机制(值传递还是引用传递)
看到一个java面试题: 问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参 ...
- 第一个博客——python通过值传递函数参数
功能:银行账户计算利率(python实现) 部分代码: def addInterest(balance, rate): newBalance = balance * (1 + rate) balanc ...
随机推荐
- VRF--虚拟路由表
VRF Virtual routing forwarding,虚拟路由转发表,简称VPN.他能在两个site之间建立两个不用的路由表,相互隔离,把每台交换机逻辑上分成多台虚拟交换机,即多VPN路由转发 ...
- Docker容器 MySQL中文乱码解决方案
docker exec进入容器 sudo docker exec -it 588340b778f6 bash 执行以下命令,将 character-set-server=utf8 写入mysql配置文 ...
- 搭建Jupyter学习环境
`python notebook`是一个基于浏览器的python数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果.jupyter是它的升级版,它的安装也非常方便,一般`Anacon ...
- U-GAT-IT笔记
目录 前言 模型结构 生成器 鉴别器 损失函数 实验结果 结语 由于博客园有时候公式显示不出来,建议在https://github.com/FangYang970206/PaperNote/blob/ ...
- GCC预编译宏查看
编译调试代码时,总是遇到要使用编译器预编译宏进行跨平台编译. gcc -E -dM -</dev/null 编译器版本 Thread model: posix gcc version 5.4.0 ...
- git 清除远程仓库已经删除的本地分支 清除已经合并到master的本地分支
在gitlab中执行deleted merged.也是可以在本地看到这些分支的 查看本地分支和追踪情况: git remote show origin 可以发现远程分支已被删除的分支,根据提示可以使用 ...
- java报错问题记录
java.lang.NoSuchMethodError 运行时错误,再编译期一般不会出现这个问题.NoSuchMethodError中文意思是没有找到方法,遇到这个错误并不是说依赖的jar包.方法不存 ...
- QT信号槽连接语法总结
信号槽是 Qt 框架引以为豪的机制之一. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种触发是没有目的的,类似广播.如果 ...
- NSURLSession中的downloadTask的使用
1.用downloadTask下载图片 优点:简单 缺点:不能监听下载的进度 代码示例: NSURL *url = [NSURL URLWithString:@"http://pic1.wi ...
- hadoop 自定义OutputFormat
1.继承FileOutputFormat,复写getRecordWriter方法 /** * @Description:自定义outputFormat,输出数据到不同的文件 */ public cla ...