博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux shell 编程 10 $0 $1 $2 $# $* $@ $! $$ $?
阅读量:6411 次
发布时间:2019-06-23

本文共 1172 字,大约阅读时间需要 3 分钟。

hot3.png

$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$ 是脚本运行的当前进程ID号$! 是最后运行的后台Process的PID$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

脚本:

#!/bin/bash# args  testecho "title: $0"echo "total args: $#"echo "first args: $1"echo "second args: $2"echo "all args: $@"echo "all args: $*"echo "currnet pid:$$"echo "status: $?"

结果:

[root src]# sh java18 1 2 3

title: java18
total args: 3
first args: 1
second args: 2
all args: 1 2 3
all args: 1 2 3
currnet pid:4005
status: 0
-----------------------------------------------------------------------------------------------------

区别:"@"和 "*"

  • 相同点:都是引用所有参数

  • 不同点:只有在双引号中体现出来,假如脚本中运行时写入了三个参数(1 2 3)则 “*”等价于“123”(相当于传递了一个参数)而“@” 等价于传递了“1” “2” “3” (传递了三个参数)

3"

脚本:

#!/bin/bash# total args a=$#for((i=0;i<$a;i++))doecho "$i"doneecho "---- $ @----"for var in $@doecho "$var"doneecho "----$ *----"for va in $*doecho "$va"doneecho "---- " $ @ "----"for var1 in "$@"doecho "$var1"doneecho "---"  "----"for va1 in "$*"doecho "$va1"done

运行结果:

[root src]# sh java19 1 2 3

0
1
2
---- $
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3

转载于:https://my.oschina.net/u/1454838/blog/531141

你可能感兴趣的文章
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>
iptables 端口转发以及双向通信
查看>>
备战一线互联网公司Java工程师面试题 (1)
查看>>
jquery图片切换插件jquery.cycle.js参数详解
查看>>
JavaScript push() 方法
查看>>
Map集合
查看>>
JSP基础语法1
查看>>
elasticsearch Java API 之GET API & DELETE API
查看>>
《深入理解Java虚拟机》——GC基础概念
查看>>
微信小程序联盟:官方文档+精品教程+demo集合(5月31日更新,持续更新中……)...
查看>>
Fastjson 的 Set类型和 WriteClassName 选项引起的BUG
查看>>
翻译: 星球生成 II
查看>>
IOS 多线程
查看>>
python序列化数据本地存放
查看>>
比较不错的图片上传插件
查看>>
判偶不判奇
查看>>
Sequelize 数据库的支持
查看>>
BigDecimal类的加减乘除
查看>>
node.js发送邮件email
查看>>