Linux:如何给Shell脚本传入参数
大家都知道普通的bash命令后边可以跟任意的参数,那我们自己编写的脚本是否也支持传递参数呢?答案当然是肯定的
执行“vim test.sh”创建一个新的shell脚本。脚本test.sh的内容如下:
#!/bin/sh
name=$1
echo “the ${name} are great man!”
给新创建的test.sh的脚本赋可执行权限,命令为“chmod +x test.sh”
执行’./test.sh “xiao wang” '命令,可以看到自己编写脚本的结果“the xiao wang are great man!”
"name=$1"中$1为系统提供的位置参数,$0代表程序的名称(./test.sh),[$1 $2…]从1开始为传递的参数。Linux系统除了提供位置参数还提供内置参数,所有内置参数如下:
$0 ----当前脚本文件名
$n ----传递给脚本或函数的参数,n是一个数字,表示第几个参数,$1表示第一个参数,$2表示第二个参数 …
$# ----传递给脚本或函数的参数个数
∗ − − − − 传递给脚本或函数的所有参数,当它被双引号( " " )包含时, " * ----传递给脚本或函数的所有参数,当它被双引号(" ")包含时," ∗−−−−传递给脚本或函数的所有参数,当它被双引号("")包含时,"*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数
@ − − − − 传递给脚本或函数的所有参数,当它被双引号( " " )包含时,与 @ ----传递给脚本或函数的所有参数,当它被双引号(" ")包含时,与 @−−−−传递给脚本或函数的所有参数,当它被双引号("")包含时,与*稍有不同,“$@” 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数
∗ 和 * 和 ∗和@不被双引号(" “)包含时,都以”$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数
下面写个小程序实践一下 ∗ 和 * 和 ∗和@
$? ----上一个命令的退出状态,或函数的返回值,如果正常退出则返回0,反之为非0值
$$ ----当前shell进程pid,对于shell脚本,就是这些脚本所在的进程ID
$! ----上一个命令的pid
新建test.sh chmod +x test.sh 执行./test.sh “a” “b” “c” “d”,观察打印结果
#!/bin/bash
echo "$=" $
echo “$@=” $@
echo "print each param from $"
for var in $
do
echo $var
done
echo “print each param from $@”
for var in $@
do
echo $var
done
echo "print each param from “$“”
for var in "$”
do
echo $var
done
echo “print each param from “$@””
for var in “$@”
do
echo $var
done
打印结果:
$= a b c d
$@= a b c d
print each param from $
a
b
c
d
print each param from @ a b c d p r i n t e a c h p a r a m f r o m " @ a b c d print each param from " @abcdprinteachparamfrom"*"
a b c d
print each param from “$@”
a
b
c
d
参考资料:
如何给shell脚本传入参数小结
Linux:如何给Shell脚本传入参数相关推荐
- linux shell java 参数_java调用linux中的shell脚本传递参数并返回执行结果
[刚接触 linux下的开发,最近遇到java调用shell脚本的问题,找到一个比较适合菜鸟级的方法,转述如下: 在需要运行的SHELL脚本第一行添加 #!/bin/sh然后在终端运行 chmod ...
- linux中安shell怎么传入参数,【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】...
方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...
- Linux Shell脚本通过参数名传递参数
平常在写shell脚本都是用$1,$2-这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采 ...
- kettle脚本Linux执行,kettle在linux下面用于shell脚本执行:转换或者作业
1 将windows下面创建好的转换,放到Linux某一个文件夹下面.如:把0816_em.ktr文件放到/home/cfj/kettle/testdemo下面. 注意里面的数据库用户名和密码可能需要 ...
- Linux 中启用 Shell 脚本的调试模式
shell 脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 概述 脚本是存储在一个文件的一系列命令. ...
- 如何在 Linux 中启用 Shell 脚本的调试模式
脚本是存储在一个文件的一系列命令.在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令. 在学习脚本或写脚本的初期阶段,我 ...
- linux 定时执行搅拌,Linux上定时shell脚本
本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...
- linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...
1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...
- linux下的shell脚本
linux下的shell脚本 一.Shell概述 二.Shell 解析器 三.Shell脚本入门 1. 脚本格式 2. 第一个Shell脚本:helloworld 3. 第二个Shell脚本:多命令处 ...
最新文章
- 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
- 用上 RocketMQ,系统性能提升了 10 倍!
- python面向对象类_python:面向对象(类)
- ubuntu镜像源列表
- java ognl使用_java框架篇---struts之OGNL详解
- BZOJ3637 Query on a tree VI
- 线性不可分的线性支持向量机的原始问题(凸二次规划)详细求解
- 对于代理服务器的理解
- 开源网络负载测试工具测评
- Vue实现搜索关键词高亮显示
- 360°环视性能倍增,瑞芯微首发全景环视芯片方案
- 致张勇先生一封信:海底捞的“七宗罪”!
- Remote Desktop Connection Manager2.92 安装+基本使用
- 新春贺礼:云和恩墨大讲堂期刊第二期
- com.mysql.cj.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.
- 运维知识体系V2.0-赵班长
- Post processing stack:像美图秀秀一样处理Unity的画质
- Geology Routine 中国地区地理常识【附有地图分析】
- HIT 软件构造LAB2
- 【Excel 教程系列第 10 篇】Excel 2016 界面介绍
热门文章
- SQL 创建数据库,创建表
- [生存志] 第121节 十二经络生气通天
- 乐视发布超4 X70/Max65/Max55 2017发力声学打造音质新标杆
- 推荐几款常用IDEA 插件
- datasheet下载网站整理(查IC芯片手册)
- 【设备树使用】-- 1 基础概念
- 计算机网络 IPV4及IPV6首部
- mate10如何android,华为Mate10怎么使用NFC功能?华为Mate10手机NFC功能使用详细教程...
- Olympus AU5800 检验LIS系统的双工通讯
- 使用树莓派接收ADS-B信号,搭建飞机雷达站