linux shell 中的位置变量
对于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 中的位置变量的更多相关文章
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- 理解 Linux shell 中的一个方言:2>&1
理解 Linux shell 中的一个方言:2>&1 2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...
- Linux shell中的一个问题 ${}带正则匹配的表达式
目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...
- Linux shell中的竖线(|)——…
原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...
- [转载]Linux shell中的竖线(|)——管道符号
原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...
- Linux Shell中有三种引号的用法
Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...
- Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)
case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默认执行的命令序列 ...
- Linux shell 中提取zip或jar文件中的某个文件
Linux shell 中提取zip或jar文件中的某个文件 假如有个压缩包 abc.jar, 里面文件如下 (可以用unzip -l abc.jar 查看): data/1.txt data/2.t ...
- linux Shell中常用的条件判断
linux Shell中常用的条件判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d ...
随机推荐
- 越狱Season 1-Episode 12:Odd Man Out
Season 1-Episode 12:Odd Man Out -Sorry to keep you waiting. 抱歉让你等了半天 -Oh, it's, uh, not a problem. 嗯 ...
- MFC-CString 字符串分割
CString strSrc = _T("1++2+3+4"); CStringArray strResult; CString strGap = _T("+" ...
- win7win8一键取得超级管理员权限
win7win8有时会出现删除不了文件的情况,弹窗提示需要某某权限,下面为解决办法: 在普通帐户中快速获得最高的权限: 新建一个.txt文本,将下面的代码复制粘贴到文件中,另存为或重命名为.reg文件 ...
- about java techelogly
https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html Differences between Java EE ...
- Linux信号量详解
1.什么是信号量信号量是一种特殊的变量,访问具有原子性.只允许对它进行两个操作:1)等待信号量当信号量值为0时,程序等待:当信号量值大于0时,信号量减1,程序继续运行.2)发送信号量将信号量值加1. ...
- HTML和JSON的数据交互-jsonp跨域
HTML和json的数据交互 <!DOCTYPE html> <html> <head> <script src="//ajax.googleapi ...
- 怎么用EDIUS实现跟踪马赛克效果
我们经常会在一些新闻的视频中看到一些马赛克,这些马赛克一般都是保护人物的隐私权,肖像权什么的.我们时常也会看到即使人物位置发生了变化,被遮挡的地方依旧还是被遮挡住,一点也不用担心因为人物运动而使马赛克 ...
- #linux包之psmisc之fuser命令
概述 [root@localhost ~]# rpm -qf /sbin/fuserpsmisc-22.6-15.el6_0.1.x86_64 先说 fuser的作用,fuser能识别出正在对某个文件 ...
- wikioi 1206 保留两位小数 【考查浮点数输入输出】
/*======================================================================== 1206 保留两位小数 题目描述 Descript ...
- jsoncpp 生成 json 字符串
Json::Value root; Json::Value arrayObj; Json::Value item; for (int i=0; i<10; i++) { item["k ...