文档章节

linux中shell 特殊变量$0 $n $* $@ $! $?的详解

githob
 githob
发布于 2016/04/15 14:51
字数 639
阅读 40
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

$0:获取当前执行脚本的文件名,包括路径。

[root@test script]# cat 0.sh 
#!/bin/bash
echo $0
[root@test script]# sh 0.sh 
0.sh
[root@test script]# cat 0.sh 
#!/bin/bash
dirname "$0"
basename "$0"
[root@test script]# sh /byrd/script/0.sh 
/byrd/script
0.sh

$n:获取当前执行的shell脚本的第N个参数,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来like${10}.

[root@test script]# cat n.sh 
#!/bin/bash
echo $1 $2 ${10}
[root@test script]# sh n.sh a b c d e f g h i j k l m n
a b j
[root@LAMP script]# sh n.sh {a..z}
a b j
[root@test script]# sh n.sh `seq 11` 
1 2 10

$*:获取当前shell的所有参数,将所有的命令行参数视为单个字符串。
$@:这个程序的所有参数"$1" "$2" "$3" "...",这是将参数传递给其他程序的最佳方式,因此TA会保留所有内嵌在每个参数里的任何空白。
$#:获取当前shell命令行中参数的总个数。

[root@test script]# cat hashtag.sh 
#!/bin/bash
echo "$#"
[root@test script]# sh hashtag.sh 
0
[root@test script]# sh hashtag.sh 1 2 3
3
[root@test script]# sh hashtag.sh `seq 300`
300
[root@test script]# cat example.sh 
#!/bin/bash
#Example
if [ $# -ne 2 ];then
    echo "Error, please enter two parameters."
    exit 1
else
    echo "You did a good job."
fi
[root@test script]# sh example.sh a 
Error, please enter two parameters.
[root@test script]# sh example.sh a b
You did a good job.
[root@test script]# sh example.sh a b c
Error, please enter two parameters.
$_:代表上一个命令的最后一个参数
$$:代表所在命令的PID

[root@LAMP script]# cat dollar.sh 
#!/bin/bash
echo "$$" >/tmp/dollar.pid
while true
do
    sleep 1
done
[root@LAMP script]# sh dollar.sh 
################################################
[root@LAMP ~]# cat /tmp/dollar.pid 
1483
[root@LAMP ~]# ps -ef |grep 1483
root      1483  1453  0 14:58 pts/1    00:00:00 sh dollar.sh
root      1532  1483  0 14:58 pts/1    00:00:00 sleep 1
root      1534  1496  0 14:58 pts/0    00:00:00 grep 1483
[root@LAMP ~]# ps -ef |grep dollar
root      1483  1453  0 14:58 pts/1    00:00:00 sh dollar.sh
root      1555  1496  0 14:58 pts/0    00:00:00 grep dollar

$!:代表最后执行的后台命令的PID
$?:代表上一个命令执行是否成功的标志,如果执行成功则$? 为0,否则不为0

[byrd@LAMP script]$ pwd
/byrd/script
[byrd@LAMP script]$ echo $?
0    #运行成功
[byrd@LAMP script]$ ls /root
ls: cannot open directory /root: Permission denied
[byrd@LAMP script]$ echo $?
2    #权限拒绝
[byrd@LAMP script]$ hahaha
-bash: hahaha: command not found
[byrd@LAMP script]$ echo $?

127    #未找到该命令

###########################################
[byrd@LAMP ~]$ cat /byrd/script/question_mark.sh 
#!/bin/bash
#Example
ls -al /root >/dev/null 2>&1 
if [ $? -eq 0 ];then
    echo "User is root"
else
    echo "The user is not root"
fi
[root@LAMP script]# sh question_mark.sh 
User is root
[root@LAMP script]# su - byrd
[byrd@LAMP ~]$ sh /byrd/script/question_mark.sh 
The user is not root

本文转载自:http://blog.csdn.net/mutourenoo/article/details/51161550

githob
粉丝 0
博文 18
码字总数 362
作品 0
浦东
私信 提问
大数据教程(2.7):Linux脚本shell编程入门

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

em_aaron
2018/07/14
44
0
Linux命令:文本处理工具awk详解

awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。 1.命令格式: awk 'pattern {action}'{fil...

wang6501081
2018/06/26
0
0
linux - shell脚本的参数处理

  shell变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。      下面是常用的特殊变量:   $0   当前脚本的文件名   $n  ...

linux运维菜
2018/07/04
0
0
shell基础知识

Shell脚本是含有若干UNIX命令或可执行程序的文本文件。 1 运行Shell脚本 Shell脚本有两种运行方式,第一种方式是利用sh命令,把shell脚本文件名作为参数。这种执行方式要求shell脚本文件具有...

长平狐
2013/01/06
85
0
拿小本本记下的Linux Shell常用技巧(一)

一. 特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数据,换句换说,当程序将数据写入到此文件...

linux服务器架构
07/12
55
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么面试必问线程状态?你的回答满分了吗

看很多同学的面经、网上的面试资料,都不约而同的提到了一个基础问题:“你知道线程有几种状态吗?状态之间的扭转是怎样的?”,有准备的同学都知道有五种:New(新建)、Runnable(可运行)...

Z_J_H
28分钟前
4
0
如何保障云上数据安全?一文详解云原生全链路加密

点击下载《不一样的 双11 技术:阿里巴巴经济体云原生实践》 本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书,点击上方图片即可下载! 作者 李鹏(壮怀)阿里云容器服务高...

阿里巴巴云原生
29分钟前
3
0
获取数组的第一个元素

我有一个数组: array( 4 => 'apple', 7 => 'orange', 13 => 'plum' ) 我想获得此数组的第一个元素。 apple 预期结果: apple 一个要求: 它不能通过引用传递来完成 ,所以array_shift不是一......

javail
30分钟前
4
0
哈希情史知多少

<p align="right">——日拱一卒,不期而至!</p> 简介 hash是我们工作中经常听到的词,比如哈希表、哈希函数、hashCode、HashTable、HashMap等等,那么它们之间到底有怎样的爱恨情仇呢?来一...

彤哥读源码
37分钟前
4
0
SpringCloud 学习(5) --- Zuul(一)基本概念、配置

[TOC] Spring Cloud eureka:注册中心 服务端:提供注册 客户端:进行注册 ribbon:负载均衡(集群) Hystrix:熔断器,执行备选方案 Feign:远程调用 Zuul:网关,统一入口。 1.1、一夫当关,...

庭前云落
39分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部