大家都知道普通的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脚本传入参数相关推荐

  1. linux shell java 参数_java调用linux中的shell脚本传递参数并返回执行结果

    [刚接触 linux下的开发,最近遇到java调用shell脚本的问题,找到一个比较适合菜鸟级的方法,转述如下: 在需要运行的SHELL脚本第一行添加 #!/bin/sh然后在终端运行  chmod ...

  2. linux中安shell怎么传入参数,【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】...

    方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...

  3. Linux Shell脚本通过参数名传递参数

    平常在写shell脚本都是用$1,$2-这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采 ...

  4. kettle脚本Linux执行,kettle在linux下面用于shell脚本执行:转换或者作业

    1 将windows下面创建好的转换,放到Linux某一个文件夹下面.如:把0816_em.ktr文件放到/home/cfj/kettle/testdemo下面. 注意里面的数据库用户名和密码可能需要 ...

  5. Linux 中启用 Shell 脚本的调试模式

    shell 脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 概述 脚本是存储在一个文件的一系列命令. ...

  6. 如何在 Linux 中启用 Shell 脚本的调试模式

    脚本是存储在一个文件的一系列命令.在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令. 在学习脚本或写脚本的初期阶段,我 ...

  7. linux 定时执行搅拌,Linux上定时shell脚本

    本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...

  8. linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...

    1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...

  9. linux下的shell脚本

    linux下的shell脚本 一.Shell概述 二.Shell 解析器 三.Shell脚本入门 1. 脚本格式 2. 第一个Shell脚本:helloworld 3. 第二个Shell脚本:多命令处 ...

最新文章

  1. 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
  2. 用上 RocketMQ,系统性能提升了 10 倍!
  3. python面向对象类_python:面向对象(类)
  4. ubuntu镜像源列表
  5. java ognl使用_java框架篇---struts之OGNL详解
  6. BZOJ3637 Query on a tree VI
  7. 线性不可分的线性支持向量机的原始问题(凸二次规划)详细求解
  8. 对于代理服务器的理解
  9. 开源网络负载测试工具测评
  10. Vue实现搜索关键词高亮显示
  11. 360°环视性能倍增,瑞芯微首发全景环视芯片方案
  12. 致张勇先生一封信:海底捞的“七宗罪”!
  13. Remote Desktop Connection Manager2.92 安装+基本使用
  14. 新春贺礼:云和恩墨大讲堂期刊第二期
  15. com.mysql.cj.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.
  16. 运维知识体系V2.0-赵班长
  17. Post processing stack:像美图秀秀一样处理Unity的画质
  18. Geology Routine 中国地区地理常识【附有地图分析】
  19. HIT 软件构造LAB2
  20. 【Excel 教程系列第 10 篇】Excel 2016 界面介绍

热门文章

  1. SQL 创建数据库,创建表
  2. [生存志] 第121节 十二经络生气通天
  3. 乐视发布超4 X70/Max65/Max55 2017发力声学打造音质新标杆
  4. 推荐几款常用IDEA 插件
  5. datasheet下载网站整理(查IC芯片手册)
  6. 【设备树使用】-- 1 基础概念
  7. 计算机网络 IPV4及IPV6首部
  8. mate10如何android,华为Mate10怎么使用NFC功能?华为Mate10手机NFC功能使用详细教程...
  9. Olympus AU5800 检验LIS系统的双工通讯
  10. 使用树莓派接收ADS-B信号,搭建飞机雷达站