文档章节

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
【2018.07.23学习笔记】【linux高级知识 Shell脚本编程练习】

1、编写shell脚本,计算1-100的和; 2、编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止; 3、编写shell脚...

lgsxp
07/23
0
0
大数据教程(2.7):Linux脚本shell编程入门

工作中,我们玩过服务器的人都知道,在linux系统中程序的启动一般都是通过运行一个Shell脚本来实现的;Shell脚本不光在启动程序方面有所作为,在大数据、自动化脚本等方面都是我们的必备知识...

em_aaron
07/14
0
0
linux下shell脚本编程2

1、 if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样 if [ ! -e file ]; then 表示文件不存在时会怎么样 if (($a<1)); then …等同于 if [ $a -lt 1 ]; then… [ ] 中不...

像教授
2017/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7安装rsync及两台机器进行文件同步

centos7安装rsync及两台机器进行文件同步 2017年12月21日 11:17:46 码农下的天桥 阅读数:2210 标签: centosrsync同步 更多 个人分类: 后端 所属专栏: 研发模式及运维 版权声明:本文为博...

linjin200
24分钟前
1
0
jpg、jpeg、png... 的区别

jpg、jpeg、png... 的区别 对于做设计这一行的人来说,这几个图片格式是最常用的,也是最常见的,几乎每一天都要与他们打交道。 刚刚入门的新人通常不知道在什么地方如何使用他们或者说如何更...

DemonsI
43分钟前
5
0
白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理

前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等。今天,...

oKong
48分钟前
2
0
Character的static方法

基本类型char的包装类是Character,使用的比较多,大家是比较熟悉的。 我只是觉得里面有很多static方法,平时不怎么用,学习一下怎么实现的,或许日后就用到了。 static int compare(char x,...

woshixin
今天
2
0
正则介绍_sed

10月17日任务 9.4/9.5 sed sed工具 匹配打印 -n 只打印匹配行,不然其他行也会打印出来 p 打印(配合-n使用) [root@centos7 tmp]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/ba...

robertt15
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部