`

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

阅读更多
www.111cn.net 编辑:lanve 来源:转载
我们知道在shell命令中有很多的变量,今天下文要讲到的是特殊变量$0 $n $* $@ $! $?详解,希望下文能帮助到各位朋友哦.

$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
未完成,待整理!

 

From: http://www.111cn.net/sys/linux/79750.htm

分享到:
评论

相关推荐

    linux中shell变量.pdf

    Linux Shell 变量详解 Linux Shell 变量是 Linux 命令行中非常重要的一部分,它们可以帮助用户更方便地执行任务和管理系统。下面我们将详细解释 Linux Shell 变量的概念和使用方法。 一、shell 变量的概念 Shell ...

    linux 特殊符号含义

    Linux 特殊符号含义详解 在 Linux 中,有许多特殊符号和变量,它们具有特定...了解 Linux 中的特殊符号和变量的含义可以帮助我们更好地使用 Linux 系统和编写 Shell 脚本。这将使我们更好地掌握 Linux 的使用和开发。

    Linux的Shell命令详解

    ### Linux的Shell命令详解 #### 一、Shell基础概念与位置变量 在Linux环境中,Shell是一种用户界面,允许用户通过命令行与操作系统进行交互。它不仅提供了强大的脚本编程功能,还支持各种实用的内置命令。 **位置...

    linux实验六 shell变量

    ### Linux实验六 Shell变量知识点详解 #### 一、实验目的 1. **熟悉Shell变量**: - Shell变量是Shell编程中的基本概念之一,用于存储数据。这些数据可以是文件名、数字或文本字符串。 - 变量分为两种类型:用户...

    Linux Shell 命令详解.doc

    ### Linux Shell 命令详解 #### 变量与引用 在Linux Shell中,变量的引用和设置至关重要。使用`${变量名}`来引用变量的值,值得注意的是,在声明或赋值时无需使用`$`作为前缀。例如,你可以设置本地变量通过`变量...

    linux Shell编程入门 实例讲解详解

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...

    Linux主要shell命令详解.doc

    ### Linux主要Shell命令详解 #### 一、命令置换与特殊字符使用 在Linux环境中,shell命令的灵活性和强大性体现在其能够实现复杂的功能组合。其中一个关键特性是**命令置换**,即通过特定语法来获取一个命令的输出...

    Linux之Shell的变量设置.doc

    Linux Shell 变量设置知识点详解 Linux Shell 变量设置是一种非常重要的技术,在 Linux 中,每个用户登录系统之后都会有一个属于自己的 bash shell,每个人都能够使用 bash 执行命令来收取自己的邮箱,但是 bash 是...

    Linux shell 命令行及脚本编程实例详解

    5. **Shell变量**: - 用户自定义变量,如:`name="John"`,然后可以通过 `$name` 引用。 - 环境变量,如:`PATH`、`HOME`,影响整个Shell会话。 - 特殊变量,如:`$0`(脚本名)、`$#`(参数数量)、`$@`(所有...

    linux下的shell与make

    ### Linux下的Shell与Make知识点详解 #### 一、Shell基础 **1.1 什么是Shell** - **定义**: Shell作为用户与Linux操作系统之间的接口,它既是命令解释器也是支持多用户的编程环境。 - **功能**: 支持多用户操作...

    linux主要shell命令详解

    ### Linux主要Shell命令详解 #### 一、Shell概念与作用 **Shell** 是连接用户与Linux操作系统的桥梁,用户通过Shell与系统进行交互。在Linux系统中,Shell扮演着多种角色,包括命令语言、命令解释程序以及程序设计...

    shell变量与创建子shell详解

    理解如何在脚本中执行程序以及如何导出Shell变量,可以更好地控制Shell脚本的行为,以及子Shell与父Shell之间变量的隔离与共享。这些知识不仅有助于编写更有效的Shell脚本,还能帮助在管理Linux系统时做出更明智的...

    Linux环境变量设置总结

    Linux 环境变量是 Linux 操作系统中一个重要的概念,它决定了系统的行为和用户的体验。环境变量是由一系列的名称和值组成的,它们可以影响系统的行为和应用程序的运行。 1. 环境变量的分类 环境变量可以分为两类:...

    Linux-Shell特殊字符和控制字符大全

    ### Linux Shell 特殊字符和控制字符详解 #### 一、Shell特殊字符 Shell特殊字符在Linux Shell编程中起着非常重要的作用,它们用于控制Shell的行为、格式化输出以及进行各种复杂的操作。以下是对给定内容中提到的...

    Linux-Shell用法详解(推荐文档).ppt

    - **常用变量**:包括命令行参数($0到$9,以及${10}以上),位置参数个数($#),所有位置参数($*和$@),后台进程PID($!),上一条命令的退出状态($?),脚本进程ID($$),还有HOME、PWD、OLDPWD等环境变量。 ...

    linux shell脚本攻略

    ### Linux Shell脚本攻略知识点详解 #### 一、Shell脚本基础 1. **Shell简介**: - **定义**:Shell是用户与Linux操作系统之间的交互界面。 - **功能**:执行命令、处理文件、运行程序等。 - **种类**:Bash、...

    Linux Shell编程.

    ### Linux Shell编程知识点详解 #### 一、Shell编程概述 **Shell** 在 Unix/Linux 系统中扮演着极其重要的角色,既是用户与操作系统交互的主要接口,也是一种强大的编程语言。通过 Shell 编程,用户不仅可以自动化...

    linux shell 简明教程.pdf

    #### 二、Shell变量详解 **1. Shell变量的设置、查看和清除** - **设置**: 变量通过简单的赋值语句设置,如`variable=value`。 - **注意**: 等号两边不能有空格。 - **空值**: 若要给变量赋空值,可以在等号后面...

    Linux——shell编程基础

    ### Linux Shell 编程基础知识详解 #### 一、Shell 概述 - **Shell 定义**:在 Linux 或 Unix 系统中,Shell 是一个命令行解释器,它接收用户的命令并将其发送给操作系统内核。Shell 既是用户与操作系统交互的接口...

Global site tag (gtag.js) - Google Analytics