《快乐的Linux命令行》笔记(27)
Contents
#《快乐的 Linux 命令行》
#for
1 | for variable [in words]; do |
最新版本的bash
已经添加了第二种格式的for
命令语法:
1 | for (( expression1; expression2; expression3 )); do |
下述命令用来设置默认值:
1 | ${parameter:-word} |
下述命令用来设置默认值,并且将word
的值赋值给parameter
(位置参数或其它的特殊参数不能以这种方式赋值):
1 | ${parameter:=word} |
若parameter
没有设置或为空,这种展开导致脚本带有错误退出,并且word
的内容会发送到标准错误:
1 | ${parameter:?word} |
若parameter
没有设置或为空,展开结果为空。若parameter
不为空,展开结果是word
的值,parameter
的值不会改变:
1 | ${parameter:+word} |
返回以prefix
开头的已有变量名的展开:
1 | # 两者等效 |
${#parameter}
展开成parameter
所包含的字符串的长度。
如果parameter
是@
或者是*
,展开结果是位置参数的个数。
${parameter:offset}
${parameter:offset:length}
展开parameter
第offset
个字符(从字符串开头算起)直到字符串的末尾,除非指定提取的长度。
若offset
的值为负数,则认为offset
值是从字符串的末尾开始算起。负数前面必须有一个空格,为防止与${parameter:-word}
展开形式混淆。length
若出现,则必须不能小于零。
如果parameter
是@
,展开结果是length
个位置参数,从第offset
个位置参数开始。
${parameter#pattern}
${parameter##pattern}
从paramter
所包含的字符串开头中清除pattern
匹配的字符串。#
形式清除最短的匹配结果,##
模式清除最长的匹配结果。
${parameter%pattern}
${parameter%%pattern}
从paramter
所包含的字符串结尾中清除pattern
匹配的字符串。
${parameter/pattern/string}
${parameter//pattern/string}
${parameter/#pattern/string}
${parameter/%pattern/string}
对parameter
的内容执行查找和替换操作。
在正常形式下,只有第一个匹配项会被替换掉。
//
形式下,所有的匹配项都会被替换掉。
/#
要求匹配项出现在字符串的开头。
/#
要求匹配项出现在字符串的结尾。
/string
可能会省略掉,这样会导致删除匹配的文本。
1 | $ foo=JPG.JPG |
${parameter,,}
把parameter
的值全部展开成小写字母。
${parameter,}
把parameter
的第一个字符展开成小写字母。
${parameter^^}
把parameter
的值全部转换成大写字母。
${parameter^}
把parameter
的第一个字符转换成大写字母(首字母大写)。
1 |
|
1 | $ vi ul-param |
在算术表达式中,以0
开头的数字被认为是八进制数,0x
代表十六进制,base#number
指定任意进制。
1 | (base) hs@hs-Z390-AORUS-PRO:/mnt/data/onns/Desktop$ echo $((0xff)) |
#数组
1 | # 单个赋值 |
下标*
和@
可以被用来访问数组中的每一个元素。