【shell】变量内容的增加、删除、替换、测试取代
一、变量内容的增加(:)
可以使用:向一个变量中添加新的内容(一定要加上:号)
方式一:变量名=变量名:新内容方式二:变量名="变量名:新内容 方式二:变量名="变量名:新内容方式二:变量名="变量名":新内容
方式三:变量名=${变量名}:新内容
ckr@ubuntu:~$ name=123
ckr@ubuntu:~$ echo $name
123
ckr@ubuntu:~$ name=${name}123123 //修改
ckr@ubuntu:~$ echo $name
123123123
ckr@ubuntu:~$ name=${name}:qwe //增加
ckr@ubuntu:~$ echo $name
123123123:qwe
ckr@ubuntu:~$
变量作用域原理: 在Shell中,使用name=0这种方式定义的变量是环境变量,其作用域默认是当前shell会话(session)。这种变量会一直存在,直到:
当前shell会话结束
使用unset命令显式删除
被新的赋值覆盖
三、变量内容的删除
格式
删除的方式有四种,不同的删除方式与#、##、%、%%有关
echo ${变量名#关键字} ==>从最左边删除符合条件的最短关键字
echo ${变量名##关键字} ==>从最左边删除符合条件的最长关键字
echo ${变量名%关键字} ==>从最右边删除符合条件的最短关键字
echo ${变量名%%关键字} ==>从最右边删除符合条件的最长关键字
ckr@ubuntu:~$ name=/12/123/1234/12345/ //初始化
ckr@ubuntu:~$ echo $name
/12/123/1234/12345/
ckr@ubuntu:~$ ${name#/*/}
bash: 123/1234/12345/: No such file or directory
ckr@ubuntu:~$ echo ${name#/*/} //删除左边最短的
123/1234/12345/
ckr@ubuntu:~$
ckr@ubuntu:~$
ckr@ubuntu:~$ echo ${name##/*/}ckr@ubuntu:~$ echo $name
/12/123/1234/12345/
ckr@ubuntu:~$ echo ${name##/*/}ckr@ubuntu:~$ echo $name.test.txt
/12/123/1234/12345/.test.txt
ckr@ubuntu:~$ echo ${name##/*/}ckr@ubuntu:~$ name=$name.test.txt
ckr@ubuntu:~$ echo ${name##/*/} //删除左边最长的,/*/
.test.txt
ckr@ubuntu:~$
四、变量内容的替换
格式
变量内容的替换与/的数量有关
echo ${变量名/关键字/新字符串} ==>从最左侧开始替换第一个符合条件的关键字
echo ${变量名//关键字/新字符串} ==>从最左侧开始替换所有符合条件的关键字
ckr@ubuntu:~$ echo ${name}
/12/123/1234/12345/.test.txt
ckr@ubuntu:~$ echo ${name/123/abc}
/12/abc/1234/12345/.test.txt
ckr@ubuntu:~$
ckr@ubuntu:~$ echo ${name//123/ABC}
/12/ABC/ABC4/ABC45/.test.txt
ckr@ubuntu:~$
