对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊。现在认真想想也是,其实自己一直以来都没有好好学习过,只是看了些速成的东西,匆匆忙忙地扫描,然后以光的速度忘掉了。好了,不淡这些了,希望和大家共勉。

第一次在Makefile中看到位置参数这东西比如$@,$^,$<等 ,shell中的位置参数也长这样子,但含义是不一样的。在shell中

$0 , 表明脚本的名字,比如执行./test/test.sh 那么$0=./test/test.sh

$#,表示传递到脚本的参数的个数

$*,$@,两者都是指所有传递到脚本的参数

$$,这个是脚本运行的pid,跟参数好像没有关系。

$?命令的退出状态,也就是命令结果码的保存位置。

其实就这几样东西,不难吧。之前连位置参数这个概念都没有,自己就容易搞混淆也就不足为奇了。

另外,$* 和 $@两者只有在被双引号括起来的时候才有区别的:

看下在程序的运行结果:

#!/bin/bash
index=1
for arg in "$@"
do
echo "arg $index=$arg"
let "index+=1"
done index=1 for arg in "$*"
do
echo "arg $index=$arg"
let "index+=1"
done index=1
for arg in $@
do
echo "arg $index=$arg"
let "index+=1"
done index=1
for arg in $*
do
echo "arg $index=$arg"
let "index+=1"
done

./test.sh 1 2 3 4 的运行结果:

arg 1=1
arg 2=2
arg 3=3
arg 4=4
arg 1=1 2 3 4
arg 1=1
arg 2=2
arg 3=3
arg 4=4
arg 1=1
arg 2=2
arg 3=3
arg 4=4

./test 1 "2 3" 4的结果:

arg 1=1
arg 2=2 3
arg 3=4
arg 1=1 2 3 4
arg 1=1
arg 2=2
arg 3=3
arg 4=4
arg 1=1
arg 2=2
arg 3=3
arg 4=4

linux shell 中的位置变量的更多相关文章

  1. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  2. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  3. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

  4. Linux shell中的竖线(|)——…

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

  5. [转载]Linux shell中的竖线(|)——管道符号

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

  6. Linux Shell中有三种引号的用法

    Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...

  7. Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2        ;; *) 默认执行的命令序列  ...

  8. Linux shell 中提取zip或jar文件中的某个文件

    Linux shell 中提取zip或jar文件中的某个文件 假如有个压缩包 abc.jar, 里面文件如下 (可以用unzip -l abc.jar 查看): data/1.txt data/2.t ...

  9. linux Shell中常用的条件判断

    linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

随机推荐

  1. Echarts通过Ajax实现动态数据加载

    Echarts(3.x版)官网实例的数据都是静态的,实际使用中往往会要求从服务器端取数据进行动态显示,官网教程里给出的异步数据加载很粗略,下面就以官网最简单的实例为例子,详细演示如下过程:1.客户端通 ...

  2. 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?

    Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016   Liliang Zhang & Kaiming He 原文链接 ...

  3. css animation让图标不断旋转

    @keyframes rotating{from{transform:rotate(0)}to{transform:rotate(360deg)}} animation:rotating 1.2s l ...

  4. Zend 安装 OpenExplorer插件

    转自:http://blog.csdn.net/binyao02123202/article/details/8954249 OpenExplorer是一款打开导进来的项目文件或文件夹所在磁盘的位置的 ...

  5. html之ul标签

    html之无序列表,建议使用样式来定义列表的类型. 通常和li配对使用 可选属性: type:disc 圆点,circle圆圈,square方块 compact:显示效果比正常更小巧 <body ...

  6. Pigs and chickens

    “Pigs and chickens”是Scrum软件开发模式中的一个比喻,用来比喻参会者在每天的Scrum会议中所起的作用. 在橄榄球中,scrum的意思是“重新开始游戏”.对于程序员来说,每日Sc ...

  7. Jfinal基础学习(一)

    我负责的项目都是Jfinal的了,有必要写一些学习知识,记录下来. 1.PropKit.use("config.txt", "UTF-8"); PropKit ...

  8. mysql四种事务隔离级的说明

    ·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 ·提交读(Read Committed):只能读取到已经提交的数据.Oracle等多数数据库默 ...

  9. 【dubbo】dubbo-admin在jdk 1.8上部署出错问题

    今天在linux上部署dubbo-admin-2.5.4,一直报错: ERROR context.ContextLoader - Context initialization failedorg.sp ...

  10. Neutron分析(2)——neutron-server启动过程分析

    neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS=" ...