Shell中特殊的变量
$表示当前的进程,当使用echo $$是会输出当前shell的pid
echo $$
| 变量 | 含义 |
|---|---|
| $0 | 当前脚本的文件名 |
| $n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
| $# | 传递给脚本或函数的参数个数。 |
| $* | 传递给脚本或函数的所有参数。 |
| $@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
| $? | 上个命令的退出状态,或函数的返回值。 |
| $$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
脚本文件varlist.sh
#!/bin/bash echo "File name: $0"
echo "First parameter: $1"
echo "Second Parameter: $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameter : $#"
执行varlist.sh hello world结果输出如下:
$ sh ./varlist.sh hello world
File name: ./varlist.sh
First parameter: hello
Second Parameter: world
Quoted Values: hello world
Quoted Values: hello world
Total Number of Parameter : 2
$*与$@的区别:
当使用""是会出对于他们存在差异,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。 看下面的例子:
#!/bin/bash
#description: use variable
#Author: blacksonny
#Copyright (c)
#Script follows here: echo "\$*=" $*
echo "\"\$*\"=" "$*" echo "\$@=" $@
echo "\"\$@\"=" "$@" echo "print each param from \$*"
for var in $*
do
echo "$var"
done echo "print each param from \$@"
for var in $@
do
echo "$var"
done echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done
输出结果:
$ sh ./varcompare.sh "a" "b" "c" "d"
$*= a b c d
"$*"= a b c d
$@= a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
退出状态:
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
Shell中特殊的变量的更多相关文章
- 【转载】shell中的特殊变量$
shell中的特殊变量:变量名含义$0shell或shell脚本的名字$*以一对双引号给出参数列表$@将各个参数分别加双引号返回$#参数的个数$_代表上一个命令的最后一个参数$$代表所在命令的PID$ ...
- SHELL中的特殊变量和结构
SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置 ...
- shell中的特殊变量和函数传参
shell中的特殊变量 $? :上一个命令的执行状态返回值 $#::参数的个数 $*:参数列表,所有的变量作为一个字符串 $@:参数列表,每个变量作为单个字符串 $1-9,${10}:位置参数 $$: ...
- shell 中的特殊变量
shell 中的特殊变量 变量名 含义 $# 参数的个数 $$ 代表所在命令的PID $0 shell或shell脚本的名字 $* 以一对双引号给出参数列表 $@ ...
- shell中特殊位置参数变量
shell中特殊位置参数变量:$0.$n.$#.$*.$@ $0:获取当前执行shell脚本文件名,如果执行脚本包含路径,那么就包括脚本路径 $n:获取当前执行shell脚本的第n个参数值.n=1.. ...
- shell中测试命变量是否已经定义
(1)sehll实例 # cat subshell #!/bin/bash if (set -u; : $var); then #冒号与$间有空格 echo "Variable is set ...
- shell中的环境变量
局部(local)环境变量 定义局部环境变量的方式如下: variableName=value 需要注意的是variableName前面没有$符号,并且=两边没有空格. 局部环境变量只能在当前shel ...
- shell中的环境变量:local,global,export
1.local一般用于局部变量声明,多在在函数内部使用.实例如下: echo_start() { local STR="$1" echo "...... ${ ...
- shell中的特殊变量IFS
shell中特殊变量IFS的使用 IFS是内部字段分隔符(internal field separator).默认情况下,bash shell会将空格.制表符.换行符 当做字段分隔符. IFS=$'\ ...
- shell中$0,$?,$!等变量意义
变量说明: $$ #Shell本身的PID(ProcessID) $! #Shell最后运行的后台Process的PID $? #最后运行的命令的结束代码(返回值) $- ...
随机推荐
- 【网络流#7】POJ 3281 Dining 最大流 - 《挑战程序设计竞赛》例题
不使用二分图匹配,使用最大流即可,设源点S与汇点T,S->食物->牛->牛->饮料->T,每条边流量为1,因为流过牛的最大流量是1,所以将牛拆成两个点. 前向星,Dini ...
- chrome Provisional headers are shown错误提示
1.一般出现这个错误是请求没有发送成功 可能原因:在上传文件或ajax上传时指定的timeout,过时时间小 其他资料: http://www.duanzhihe.com/575.html http: ...
- (转)TortoiseSVN使用简介
TortoiseSVN使用简介 TortoiseSVN使用简介 2009-04-24 来源:dev.idv.tw 1 安装及下载client 端 2 什么是SVN(Subversion)? 3 为甚么 ...
- Swift2.0异常处理
// 在抛出异常之前,我们需要在函数或方法的返回箭头 -> 前使用 throws 来标明将会抛出异常 func myMethodRetrunString() throws -> Strin ...
- Eclipse换背景
http://tieba.baidu.com/p/2128040173 1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color ...
- Mybatis学习总结(二)—使用接口实现数据的增删改查
在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...
- MemCached高级缓存
MemCached高级缓存配置 Memcache相关介绍: memcache 是一个高性能的分布式的内存对象缓存系统,它能够存储各种各样的的数据,包括图片,视频,文件等等.缓存功能. DB.数据源-- ...
- DEDE提高生成HTmL的速度
1.找到include/inc/inc_fun_SpGetArcList.php打开之. 2.查找以下代码: for($i=0;$i<$ridnum;$i++){ if($tps ...
- Xcode-Xcode 7.3 解决不能自动联想问题-备
一.问题: 升级Xcode 7.3 之后发现导入头文件之后,没法自动联想. 二. 解决办法: 打开Xcode --> Target --> BuildSettings --> App ...
- Android开发者须知的几种APP加密方式--备
作为一个Android开发者,不仅需要使自己的APP功能丰富,便于使用,同时也需要去完善APP的安全性,下面就介绍几种简单而又可靠的加密方法.1.Spongy Castle Spongy Castle ...