文档章节

linux shell 编程 10 $0 $1 $2 $# $* $@ $! $$ $?

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


脚本:

#!/bin/bash
# args  test
echo "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@localhost 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++))
do
echo "$i"
done

echo "---- $ @----"
for var in $@
do
echo "$var"
done

echo "----$ *----"
for va in $*
do
echo "$va"
done

echo "---- " $ @ "----"
for var1 in "$@"
do
echo "$var1"
done

echo "---"  "----"
for va1 in "$*"
do
echo "$va1"
done


运行结果:

[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @----
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3


© 著作权归作者所有

共有 人打赏支持
QH_C
粉丝 1
博文 75
码字总数 69153
作品 0
朝阳
程序员
内核入门驱动——helloword模块

一.认识Linux内核编程 1. Linux是"单块内核"的操作系统,这是说整个系统内核都运行于一个单独的保护域中,但是linux内 核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码...

a4729821
04/22
0
0
linux-shell编程基础

第1章 shell基础 1.1 什么是shell Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用...

张恩清
08/19
0
0
Crontab 让linux定时执行shell脚本

使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行 入门 # crontab –e 这样可以已编辑模式打开个人的crontab配置文件,然...

酱醋茶丶
2015/07/31
0
0
嵌入式Linux学习基础规划篇

嵌入式的学习是需要日积月累的,是通过一点一滴的积累才能成为大神。下面来介绍一下嵌入式linux学习基础规划,目标是达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质...

创客学院
04/10
0
0
linux shell数据重定向(输入重定向与输出重定向)详细分析

导读小文:【http://www.ibm.com/developerworks/cn/linux/l-iotips/】 技巧:Linux I/O重定向的一些小技巧 简介: Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞...

无明时空
2013/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 公司女同事约我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享水木年华的单曲《蝴蝶花(2002年大提琴版)》 《蝴蝶花(2002年大提琴版)》- 水木年华 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
7分钟前
12
4
Linux环境搭建 | VMware下共享文件夹的实现

在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了。本文介绍了两种共享文...

良许Linux
今天
5
0
JUC锁框架——AQS源码分析

JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具。因为锁,才能实现正确的并发访问。而AbstractQueuedSynchronizer(AQS)是一个用来构建锁和同步器的框架,使用A...

长头发-dawn
今天
3
0
docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
今天
4
1
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部