shell学习笔记(三)
时间:2010-12-06
来源:chennrui
参数展开是shell提供变量值在程序中使用的过程。如:
aa="hello word"
sleep 10
echo $aa 或 "$aa"
变量展开需用"",如果改为'',则不会展开。echo '$aa',输出为'$aa'
替换运算符
| 
          ${varname:-word} ${varname:=word} 
           ${varname:?message} 如果varname存在且不是null,则返回它的值;否则,显示varname:message后退出脚本。 
           ${varname:+word} 如果varname存在且非null,则返回word;否则,返回null。例,如果count已定义,则${count:+1}返回1。 
           
          ps:上述运算符内的冒号都是可选的。如果去掉则将定义中的存在且非null改为存在,即运算符仅用于测试变量是否存在。 | 
模式匹配运算符
| 
          ${var#pattern} 
           
          ${var%pattern} 
           例: path=/home/tolstoy/mem/long.file.name ${path#/*/} 结果: tolstoy/mem/long.file.name ${path##/*/} 结果:long.file.name ${path%.*} 结果:/home/tolstoy/mem/long.file ${path%%.*} 结果:/home/tolstoy/mem/long 
           
          ${#var} : 返回变量的字符串长度 | 
特殊变量: 例
| 
          $ set -- hello "hi there" greetings         设置新的位置参数 | 
if-elif-else-fi基本语法:例
| #! /bin/bash | 
case/esac基本语法:
case命令可类比C语言的switch/case语句,esac表示case语句块的结束。C语言的case只能匹配整型或字符型常量表达式,而Shell脚本的case可以匹配字符串和Wildcard,每个匹配分支可以有若干条命令,末尾必须以;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到esac之后,不需要像C语言一样用break跳出。
| 
          #! /bin/bash | 
for/in/do/done基本语法:例
| 
          #! /bin/bash 
          ps: 如果未写()中内容,则默认执行 for FRUIT in "$#" | 
while/do/done基本语法:例
| 
          #! /bin/sh | 
热门阅读
-   office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具阅读:74 
-   如何安装mysql8.0 如何安装mysql8.0阅读:31 
-   Word快速设置标题样式步骤详解 Word快速设置标题样式步骤详解阅读:28 
-   20+道必知必会的Vue面试题(附答案解析) 20+道必知必会的Vue面试题(附答案解析)阅读:37 
-   HTML如何制作表单 HTML如何制作表单阅读:22 
-   百词斩可以改天数吗?当然可以,4个步骤轻松修改天数! 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!阅读:31 
-   ET文件格式和XLS格式文件之间如何转化? ET文件格式和XLS格式文件之间如何转化?阅读:24 
-   react和vue的区别及优缺点是什么 react和vue的区别及优缺点是什么阅读:121 
-   支付宝人脸识别如何关闭? 支付宝人脸识别如何关闭?阅读:21 
-   腾讯微云怎么修改照片或视频备份路径? 腾讯微云怎么修改照片或视频备份路径?阅读:28 















