变量说明: 
$$ Shell本身的PID(ProcessID) 
$! Shell最后运行的后台Process的PID 
$? 最后运行的命令的结束代码(返回值) 
$- 使用Set命令设定的Flag一览 
$* 所有参数列表。 所有的参数被认为是一个字符串
$@ 所有参数列表。参数是独立的字符串
$# 添加到Shell的参数个数 
$0 Shell本身的文件名 
$1~$n 添加到Shell的各参数值。$1是第1个参数、$2是第2个参数…。

通过一个脚本,来看看各个变量的效果

 #!/bin/sh

 ## RustFisher

 echo "----------------------"
 echo "PID:            \$$  $$"
 echo "option numbers: \$#  $#"
 echo "last return:    \$?  $?"
 echo "all parameters: \$*  $*"
 echo "all parameters: \$@  $@"
 echo "file name:      \$0  $0"
 echo "1st param:      \$1  $1"
 echo "2nd param:      \$2  $2"
 echo "3rd param:      \$3  $3"
 echo "4th param:      \$4  $4"
 echo "9th parem:      \$9  $9"
 echo "-----------------------"

 index=

 echo "get args by \"\$@\":"

 for arg in "$@"
 do
 echo "Arg #$index=$arg"
 let "index+=1"
 done

 echo "-----------------------"

 index=

 echo "get args by \"\$*\":"

 for arg in "$*"
 do
 echo "Arg #$index=$arg"
 done

 echo "-----------------------"

输出结果:

$ sh show.sh dont "worry be" happy
----------------------
PID:            $$
option numbers: $#  

all parameters: $*  dont worry be happy
all parameters: $@  dont worry be happy
  show.sh
1st param:      $  dont
2nd param:      $  worry be
3rd param:      $  happy
4th param:      $
9th parem:      $
-----------------------
get args by "$@":
Arg #=dont
Arg #=worry be
Arg #=happy
-----------------------
get args by "$*":
Arg #=dont worry be happy
-----------------------

随机推荐

  1. 每天一个Linux命令—— crontab

    一.简介 1. Linux中有许多周期性执行的任务,这些任务由cron守护进程完成,因此cron这个系统服务是默认启动的. 2.Linux中调度任务分为两类:系统任务调度和用户任务调度,系统任务调度即 ...

  2. MySQL存储汉字

    之前在网上查找了很多方法,排在前排的都是修改配置文件my.ini的,没有成功,后来找到了一个解决方法: 在建表的时候,在语句后面加上段"engine = innodb default cha ...

  3. [IR] String Matching

    BWT KMP Boyer-Moore BWT [IR] BWT+MTF+AC 中已经介绍了BWT (Burrows–Wheeler_transform)数据转换算法, 这种变换方式不仅方便压缩,同时 ...

  4. c++ 库函数返回的字符串指针是否需要手动释放

    #include <stdio.h> char * tmpnam(char *s); tmpnam函数返回一个不与任何已存在文件同名的有效文件名,如果字符串s不为空,文件名也会写入它.对t ...

  5. Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)

    前言: 上一章详细阐述了dojo的事件绑定操作,本章将讲解dojo的请求操作 注:dojo的请求操作与js和jquery完全不同! 1.dojo的请求 dojo通过request.get()/.put ...

  6. mysql 表名默认 windows不区分大小写 在linux区分大小写

    MySQL在Linux下数据库名.表名.列名.别名大小写规则:  1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格 ...

  7. 解决Linux下面Firefox无法播放mp3的问题

    之前一直使用kali linux ,上班屏蔽噪音都用网易音乐.既然没有Linux客户端,那就网页版吧.不得不说,网易音乐的网页版做的真心赞. 在Kali Linux下面使用Firefox听歌一直都很正 ...

  8. JavaScript之语句,循环

    JavaScript中语句主要分为三类:顺序,分支,循环. 1.顺序语句: 按照循序依次执行,最普通常见的语句,这里不多赘述. 其结构如下 2.分支语句: 根据条件判断,不同的结果执行不同的语句. 其 ...

  9. [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限

    Visual Studio以管理员的身份运行就可以了.

  10. int a=1,b=~a;请问b的值是多少?

    int a=1,b=~a; 首先计算机中存储的是二进制补码. 把1转为二进制:0000 0001  ->反码  0000 0001 ->补码   0000 0001 ->取反  11 ...