Bash ${}及其它

📅 2026/7/16 1:11:11
Bash ${}及其它
bash \${} 属于参数变量扩展一类用man bash 可以输出完整帮助文档查找参数替换部分可阅读帮助.一: bash 字符串操作:例: FILE_NAME/usr/local/world.txt1. 取字符串长度\${#FILE_NAME}2. 取子串\${FILE_NAME:10} #从位置10开始取字串\${FILE_NAME:5:10} #从位置5开始取10个字符3. 删除字符串匹配\${FILE_NAME##*/} #删除从左开始到/ 止的所有字符 最大匹配\${FILE_NAME#*/} #删除从左开始到/ 止的所有字符 最小匹配\${FILE_NAME%%/*} #删除从右开始到左/ 止的所有字符最大匹配\${FILE_NAME%/*} #删除从右开始到左/ 止的所有字符最小匹配关键是理解#,%,*元字符的作用#是左%是右开始多字符匹配。左trim,右trim之意上面那个/是普通的字符。不要混淆。4. 替换字符串 (也使用匹配操作\${FILE_NAME/world.txt/hello.txt} # 将world.txt 替换成hello.txt\${FILE_NAME//w/W} # 将w 全部换成 W此处的/是元字符, 查找替换之意注: bash 替换字符串中的/为空格 还得借助sed 才比较方便echo \$FILE_NAME |sed s#/# #g就是说它有左trim, 右trim 及查找替换功能.对应的函数原型为(再次总结和举例)\${#string} \$string的长度\${string:position} 在\$string中, 从位置position开始提取子串\${string:position:length} 在\$string中, 从位置position开始提取长度为length的子串\${string#substring} 从变量\$string的开头, 删除最短匹配substring的子串\${string##substring} 从变量\$string的开头, 删除最长匹配substring的子串\${string%substring} 从变量\$string的结尾, 删除最短匹配substring的子串\${string%%substring} 从变量\$string的结尾, 删除最长匹配substring的子串\${string/substring/replacement} 使用replacement, 来代替第一个匹配的substring\${string//substring/replacement} 使用replacement, 代替所有匹配的\ubstring可见, bash 的变量替换, 相校与c函数实现,其输入参数调用方法返回值与C 非常不同。它用了一种更简单的书写方式。5. \${}内对变量进行赋值和引用用echo 命令可以实验5.1 \${filehello.txt} 与 \${file:hello.txt} 有什么区别.\${} 是变量引用扩展, \${file}返回file的引用,这是传递file 的引用, file 若有值,返回file的值\${file}file 无值(不存在或为空时) 是当file 未定义时,返回hello.txt,并把hello.txt 赋值给file: 是当file 未定义或者为空时,返回hello.txt, 并把hello.txt 赋值给file: 会更常用5.2 \${file-hello.txt} 与 \${file:-hello.txt} 的区别这也是传递file 的引用, file 若有值,返回file的值\${file}file 无值(不存在或为空时)- 当file未定义,返回hello.txt, 但对file变量不做赋值:- 当file为定义或为空时,都返回hello.txt, 不更改file变量的值5.3 \${filehello.txt} 及 \${file:hello.txt} 是变量覆盖的意思,把影响变量本身,只影响返回值变量不存在,返回空有值时用新值覆盖:变量不存在或为空,返回空非空用新值覆盖5.4 \${file?hello.txt} 及 \${file:?hello.txt}\${var?提示信息} , 报错输出变量不存在提示信息作为错误信息输出至STDERR:?变量不存在或为空提示信息作为错误信息输出至STDERR二: Bash 取得命令行参数\$#, \$1,\$2,\$3枚举命令行参数: for a in \$ { echo \$a; }----------------------------------------三执行bash如何让命令回显bash -v test.sh或#!/bin/bash -v-x 执行前打印-n 只运行不执行----------------------------------------四 bash 输出等宽数字到变量\$ printf -v str %06d\n 15\$ echo \$str000015----------------------------------------五: bash 的执行顺序:别名,函数,内置命令,外部命令----------------------------------------六:关于bash的有用的几个辅助命令alias 显示所有alias 定义declare -F 显示所有的函数定义declare -f 显示所有的函数定义及内容help 给出所有的内部命令的帮助, 具体的帮助用 help itemhash -l 显示命令hash表enable 判断一个命令是否是内置命令, 例如: enable lsenable -a 列出所有的内部命令type 也可以判断一个命令是什么类型,例如: type lsalias,declare,enable,hash,type都是内置命令。最常见和常用的内置命令是cd 命令其次pwd.alias 命令写脚本语言常用的if then,fi;while do,done;for do,done; case in,esac;也是内部命令用help,及enables 查看所有内部命令。