《快乐的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 | # 单个赋值 |
下标*和@可以被用来访问数组中的每一个元素。