Think && Act
  • Welcome
  • OpenWRT系统
    • Remote Command Execution on GL.iNet's mini-routers
    • 配置DTS支持USB存储
    • OpenWRT procd启动过程
    • udhcpc如何绑定网络接口
    • 提交新平台补丁到OpenWRT社区
  • 无线WiFi技术
    • WiFi 四次握手分析
    • mac80211框架基础
    • How to get wirelss assoclist on MT7628
    • WPS on GL.iNet's OpenWRT
  • 密码学与安全
    • Feistel Cipher
    • 数据加密标准(DES)
    • Data Encryption Standard(DES)
    • Advanced Encryption Standard(AES)
  • 数据结构与算法
  • VPN技术
    • Using Tor on GL.iNet's mini-routers
    • Using Softether VPN on GL.iNet's mini-routers
    • Using ZeroTier on GL.iNet's mini-routers
  • Go语言
    • A Quick Guide for Go Modules
  • Shell脚本
    • Parameter Expansion ${}
    • User's Guide for Awk
  • Python语言
    • Python in Visual Studio Code
  • 投资理财
    • 【入门】股票入门基础
    • 【股初】找准股票入场时机
    • 【股初】合理规避风险
    • 【股初】“好公司”投资法
    • 【股初】财务三表分析
    • 【股初】“捡烟蒂”投资法
    • 【股初】构建白马组合
    • 【股进】选择好生意
    • 【股进】好公司——商业逻辑
  • 工具箱
    • A Guide of Visual Studio Code
    • hexo搭建博客
Powered by GitBook
On this page
  • shell参数扩展说明
  • 值替换
  • 字符串替换
  • Examples
  • 字符串长度
  • Examples
  • 字符过滤
  • Examples
  • See also

Was this helpful?

  1. Shell脚本

Parameter Expansion ${}

shell参数扩展说明

shell 参数扩展格式:

${expression}

expression表达式可以为任意的字符,直到匹配到'}'为止,因此表达式包含'}'的话需要用转义或者用单引号包含起来。

值替换

${parameter:-word}
如果parameter为null或者未设置,整个参数替换表达式值为word

${parameter:=word}
如果parameter为null或者未设置,整个参数替换表达式值为word,并且parameter参数值设置为word

${parameter:?word}
如果parameter为null或者未设置,则打印出错误信息。否则,整个参数替换表达式值为$parameter

${parameter:+word}
如果parameter不为null或者未设置,则整个参数替换表达式值为word

字符串替换

${parameter/pattern/string}
${parameter//pattern/string}
将parameter对应值的pattern字符串替换成为string字符串
/表示只替换一次
//表示全部替换

Examples

${parameter/pattern/string}

var="3/1/2/3333"
echo ${var/3/6}
6/1/2/3333

${parameter//pattern/string}
var="3/1/2/3333"
echo ${var//3/6}
6/1/2/6666

字符串长度

${#parameter}
获得字符串的长度

Examples

${#parameter}

var="Hello"
echo ${#var}
5

字符过滤

${parameter%word}
${parameter%%word}
word支持通配符,从尾开始匹配word,将匹配word正则表达式的字符删除
%为最短匹配,%%为最长匹配

${parameter#word}
${parameter##word}
word支持通配符,从头开始扫描word,将匹配word正则表达的字符删除
#为最短匹配,##为最长匹配

注意,匹配成功就停止继续匹配,也就是只匹配一次。最长匹配一般是针对通配符,能够匹配到最长字符串,也就是即时匹配成功,还会继续匹配,取最后一次匹配成功的。

Examples

${parameter%word}

x=file.c
echo ${x%.c}.o
file.o

${parameter%%word}

x=posix/src/std
echo ${x%%/*}
posix

${parameter#word}

x=$HOME/src/cmd
echo ${x#$HOME}
/src/cmd

${parameter##word}

x=/one/two/three
echo ${x##*/}
three

See also

PreviousShell脚本NextUser's Guide for Awk

Last updated 5 years ago

Was this helpful?

http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02