shell 5参数
1. shell传递参数
我们可以在执行shell脚本时,向脚本传递参数。
| $n | n代表数字。$0表示执行的脚本名称,$1表示第1个参数,$2是第2个参数. shell默认支持9个参数,使用shift可以传递更多的参数。 |
| $#,${#*},${#@} | 传递到脚本的参数个数 |
| $$ | 脚本运行的当前进程的ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $? | 显示上个命令的执行情况。0表示没有错误,其他任何值表明有错误。 |
| $@ | 一个单字符显示所有向脚本传递的参数 |
| $* | 以一个单字符显示所有向脚本传递的参数 |
| $- | 显示shell使用的当前选项,与set命令功能相同 |
| ${*:1:3},${*:$#} | 表示多个参数 |
```
#shell
#!/bin/sh
echo "shell脚本名称:" $0 #shell脚本名称: 829test.sh
echo "第一个参数:" $1 #第一个参数: 3
echo "第二个参数:" $2 #第二个参数: 4
echo "脚本的个数:" $# #脚本的个数: 2
echo "当前进程ID:" $$ #当前进程ID: 6673
echo "后台运行的最后一个进程ID:" $! #后台运行的最后一个进程ID:
echo "上个命令的执行结果:" $? #上个命令的执行结果: 0
echo "参数作为字符串显示*:" $* "$*" #参数作为字符串显示*: 3 4 3 4
echo "参数作为字符串显示@:" $@ "$@" #参数作为字符串显示@: 3 4 3 4
```
2. \(@与\)*区别
#!/bin/sh
#$@ vs $*
func1(){
echo \"\$@\"
for d in "$@";do
echo $d
done
}
func1 1 2 '3 4' '"5 6" 7'
func2(){
echo \$@
for d in $@;do
echo $d
done
}
func2 1 2 '3 4' '"5 6" 7'
func3(){
echo \"\$*\"
for d in "$*";do
echo $d
done
}
func3 1 2 '3 4' '"5 6" 7'
func4(){
echo \$*
for d in $*;do
echo $d
done
}
func4 1 2 '3 4' '"5 6" 7'
| 1 2 '3 4' '"5 6" 7' | $* | $@ |
| 没有双引号 $*和$@一样,都是按空格分隔打印参数 |
1 2 3 4 "5 6" 7 |
1 2 3 4 "5 6" 7 |
| 双引号 "$*"一行打印全部参数 "$@"挨个输出参数 |
1 2 3 4 "5 6" 7 | 1 2 3 4 "5 6" 7 |
# 3. 注意
shell脚本中传递的参数如果包含空格,应该对该参数使用单引号或者双引号。
| 脚本 | 参数:Tom Cat | 参数:"Tom Cat" |
| #!/bin/sh echo "传入参数:$*" echo "第一个参数:$1" echo "参数个数:$#" |
传入参数:Tom Cat 第一个参数:Tom 参数个数:2 |
传入参数:Tom Cat 第一个参数:Tom Cat 参数个数:1 |
shell 5参数的更多相关文章
- Shell 传递参数
Shell 传递参数 向脚本传递参数,格式为:$n. 向脚本传递三个参数,并分别输出: echo "Shell 传递参数实例!"; echo "第一个参数为:$1&quo ...
- 2. Shell 传递参数
1. 概要 我们可以在执行 Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- #!/bin/bas ...
- [ 转]Shell中参数($0,$1,$#,$NF,$@等)的含义
Shell中参数($0,$1,$#,$NF,$@等)的含义 发布时间:2018-01-19 来源:网络 上传者:用户 摘要:此处仅仅从来记录平时常用的命令的参数.以免下次忘记时及时找到.也方便更多的人 ...
- shell脚本参数中有空格
shell脚本参数中有空格 在shell脚本中如果有空格的处理如下: sh test.sh "hello word" echo $1 得到的是hello,而不是hello word ...
- Shell传递参数【转载】
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...
- Shell 传递参数(转)
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以下实例我们向脚本传递三 ...
- Linux学习笔记 -- 为 Shell 传递参数
我们可以在执行 Shell 脚本时,可以向脚本传递参数.脚本内获取参数的格式为:$n.(n 代表一个数字,0为所执行的shell脚本名称,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类 ...
- 三、Shell 传递参数
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...
- shell传递参数(三)
$n:n代表一个数字,指执行脚本的第n个参数.特别地,$0指执行的文件名 [root@ipha-dev71- exercise_shell]# cat test.sh #!/bin/bash echo ...
随机推荐
- ansible role[初稿]
ansible roles role_name/ files/:存储由copy或script等模块调用的文件: tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task:其它 ...
- 【设计模式】 模式PK:工厂模式VS建造者模式
1.概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象.我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方 ...
- TP 模板的变量输出
- Linux上安装编译工具链
在Linux上安装编译工具链,安装它会依赖dpkg-dev,g++,libc6-dev,make等,所以安装之后这些依赖的工具也都会被安装.ubuntu软件库中这么描述 Informational l ...
- 揭秘Keras推荐系统如何建立模型、获取用户爱好
你是否有过这样的经历?当你在亚马逊商城浏览一些书籍,或者购买过一些书籍后,你的偏好就会被系统学到,系统会基于一些假设为你推荐相关书目.为什么系统会知道,在这背后又藏着哪些秘密呢? 荐系统可以从百万甚至 ...
- SSH 获取GET/POST参数
在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息.最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到pos ...
- QT4 交叉编译
配置 ./configure \-prefix /usr \-no-rpath \-embedded arm \-xplatform /qws/linux-arm-gnueabi-g++ \-dept ...
- 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...
- shell 脚本实战笔记(7)--集群网络相关知识和环境搭建
前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 I ...
- 【c++基础】vector中按照Point类型某一个变量进行排序
code // sort(a.begin(), a.end(), cmpy); //subfunction bool cmpy(cv::Point const& a, cv::Point co ...