一、shell脚本特殊变量

1、shell中常用特殊位置变量说明:

$0  获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径

$n  获取当前执行的shell脚本的第n个参数值,n=1-9,表示第1,...,9个参数值,当n大于9时,则用大括号{ } 括起来,如${10},脚本接的参数以空格隔开

$#  获取当前执行的shell脚本后面接的参数总个数

$*  获取当前shell脚本所有传参的参数,不加双引号时,与$@的作用相同,加双引号时,如"$*",则表示将所有参数作为单个字符串,如"$1 $2 $3"

$@   获取当前shell脚本所有传参的参数,不加双引号时,与$*的作用相同,加双引号时,如"$@",则表示将所有参数作为独立的字符串,相当于"$1" "$2" "$3"

2、shell中常用特殊状态变量说明:

$?  获取执行上一个指令的执行状态返回值(0为成功,非0为失败)

$$  获取当前执行的shell脚本的进程号(PID)

$!  获取上一个在后台工作的进程的进程号(PID)

$_  获取在此之前执行的命令或脚本的最后一个参数

二、变量子串相关

1、变量子串常见操作

${parameter}

返回变量$parameter的内容

${#parameter}

返回变量$parameter内容的长度(按字符),也适用于特殊变量

${parameter:offset}

在变量${parameter}中,从位置offset之后开始提取子串到结尾

${parameter:offset:length}

在变量${parameter}中,从位置offset开始提取长度为length的子串

${parameter#word}

从变量${parameter}开头删除最短匹配的word子串

${parameter##word}

从变量${parameter}开头删除最长匹配的word子串

${parameter%word}

从变量${parameter}结尾删除最短匹配的word子串

${parameter%%word}

从变量${parameter}结尾删除最长匹配的word子串

${parameter/pattern/string}

使用string代替第一个匹配的pattern

${parameter//pattern/string}

使用string代替所有匹配的pattern

${parameter:-word}

如果parameter的变量值为空或未赋值,则会返回word字符串并代替变量的值

用途:如果变量未定义,则返回备用的值,防止变量为空值或因未定义而导致异常

${parameter:=word}

如果patameter的变量值为空或未赋值,则设置这个变量值为word,并返回其值,位置变量与特殊变量不适用

用途:基本同上一个${parameter:-word},但变量又额外给patameter变量赋值了

${parameter:?word}

如果parameter的变量值为空或未赋值,那么word字符串将被作为标准错误输出,否则输出变量的值

用途:用于捕捉由于变量未定义而导致的错误,并退出程序

${parameter:+word}

如果parameter的变量值为空或未赋值,则什么都不做,否则word字符串将替代变量的值

用途:用于测试变量是否存在,如果paramete变量r的值为word,则说明paramete变量有值

shell脚本特殊变量与变量子串相关知识的更多相关文章

  1. shell 脚本实战笔记(7)--集群网络相关知识和环境搭建

    前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 I ...

  2. shell脚本中特定符合变量的含义

    shell脚本中特定符合变量的含义: $#   传递到脚本的参数个数 $*    以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$    脚本运行的当前进程PID号 ...

  3. shell脚本中一些特殊变量

    在shell脚本中,一些常见的特殊变量表示方式还是需要知道的 如下就是一些经常用到的特殊变量表示方法: $0    当前脚本名$1 $2...    传入脚本or函数的参数(大于10需大括号括起来)$ ...

  4. Shell脚本编写2------有关变量

    shell脚本中变量定义方式十分简单,直接将值赋值给变量较好例如 :name="tuanzhang"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.变量命名 ...

  5. Bash基础——Shell脚本内部常用环境变量

    $@和$*区别 不加引号的时候没区别 #! /usr/bin/bash function print_args_at { printf "%s\n" $@ echo $@ } fu ...

  6. Shell脚本 (二) 变量与运算符

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 四.Shell 中的变量 1.系统变量 1.1 常用系统变量 $HOME. $PWD. $SHELL . ...

  7. 利用SHELL脚本修改当前环境变量

    转自http://www.chinaunix.net/old_jh/7/21485.html 1.背景 ---- 在日常的工作中,为了设置一大批环境变量,我们通常编辑了一个shell程序,包含了多个的 ...

  8. shell 脚本编程之特殊变量

    $0 当前脚本的文件名$n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2.$# 传递给脚本或函数的参数个数.$* 传递给脚本或函数的所有参数.$@ ...

  9. shell 脚本学习之内部变量

    一,$BASH Bash的二进制程序文件的路径 二,$BASH_ENV 这个环境变量会指向一个Bash的启动文件, 当一个脚本被调用的时候, 这个启动文件将会被读取. 三,$BASH_SUBSHELL ...

随机推荐

  1. CSU 1551 Longest Increasing Subsequence Again(树状数组 或者 LIS变形)

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1551 升级版:Uva 1471 题意: 让你求删除一段连续的子序列之后的LIS. 题 ...

  2. machine learning 之 Recommender Systems

    整理自Andrew Ng的machine learning 课程 week 9. 目录: Problem Formulation(问题的形式) Content Based Recommendation ...

  3. Delphi 二维码生成

    Delphi 二维码生成 http://download.csdn.net/detail/warrially/7370171

  4. WPF数据模板中绑定事件不触发问题

    今天比较闲,做一个练手的项目,结果在xaml中写了一个用户的数据模板后,在其中的某个Canvas上绑定了一个鼠标左击的事件,结果调试的时候,无论怎么点击都不跳到断点那里,百思不得其解. 之后尝试不绑定 ...

  5. css设计丝带

    <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8&quo ...

  6. Eclipse如何汉化[完美版]

    当前版本:Eclipse 4.5.1 1.如何查看eclipse的版本呢 找到关于Eclipse,点击 . 2.打开浏览器连接http://www.eclipse.org/babel/download ...

  7. LeetCode 114. Flatten Binary Tree to Linked List 动态演示

    把二叉树先序遍历,变成一个链表,链表的next指针用right代替 用递归的办法先序遍历,递归函数要返回子树变成链表之后的最后一个元素 class Solution { public: void he ...

  8. 2019/11/09 TZOJ

    1001 Interesting Integers http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail& ...

  9. 《JAVA设计模式》之原型模式(Prototype)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办 ...

  10. knn 数据集准备

    """ Created on Mon Aug 26 20:57:24 2019 @author: huoqs knn algorithm ""&quo ...