赞
踩
$
$()
⽤法shell的特殊变量,⽤在如脚本,函数传递参数使⽤
有如下特殊的,位置参数变量
变量 | 作用 |
---|---|
$0 | 获取shell脚本文件名,以及脚本路径 |
$n | 获取shell脚本的第n个参数,n在1~9之间,大于9则需要些{} ,如{$10} |
$# | 获取执行的shell脚本后面的参数总个数 |
$* | 获取shell脚本所有参数,不加引号等同于$@ 作用,加上引号"$*"作用是接收所有参数为单个字符串 |
$@ | 不加引号,效果同上,加引号,是接收所有参数为独立字符串 |
查找方式:man bash
,搜索Special Parameters
变量 | 作用 |
---|---|
$? | 上次命令执行状态返回值,0正确,非0失败 |
$$ | 当前shell脚本的进程号 |
$! | 上一次后台进程的PID |
$_ | 获取上次命令的最后一个参数 |
-n
:不换行输出内容-e
:解释转义字符
\n
:换行\r
:回车\t
:tab\b
:退格\v
:纵向制表符eval ls; cd ~
exec
执行后,自动exit
语法:
语法 | 作用 |
---|---|
# | 从开头删除匹配最短 |
## | 从开头删除匹配最长 |
% | 从结尾删除匹配最短 |
%% | 从结尾删除匹配最长 |
# | 指定字符内容截取 |
a*c | 匹配开头为a,中间任意个字符,结尾为c的字符串 |
${变量} | 返回变量值 |
${#变量} | 返回变量长度,字符长度 |
${变量:start} | 返回变量offset数值之后的字符 |
${变量:start:length} | 提取offset之后的length限制的字符 |
${变量#word} | 从变量开头,删除最短匹配的word子串 |
${变量##word} | 从变量开头,删除最长匹配的word |
${变量%word} | 从变量结尾,删除最短匹配的word子串 |
${变量%%word} | 从变量结尾,删除最长匹配的word子串 |
${变量/pattern/string} | 用string代替第一个匹配的pattern |
${变量//pattern/string} | 用string代替所有的pattern |
操作实例:删除文件名
# 通过⼦串的替换⽅式 snowk@SnowKYP# f=stu_102999_1_finished.jpg # 变量的⼦串功能,去掉后缀 snowk@SnowKYP# echo ${f//_finished/} stu_102999_1.jpg # 利⽤变量的反引⽤替换⽂件名 snowk@SnowKYP# mv $f `echo ${f//_finished/}` # 剩下的⽂件,利⽤循环操作 # 找出剩下所有需要替换的jpg⽂件 snowk@SnowKYP# ls *fin*.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finished.jpg # 写shell循环代码,循环操作 # 去掉所有jpg⽂件的_finished后缀 snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done snowk@SnowKYP# ls *.jpg stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:如果parameter
变量值为空,返回word
字符串${parameter:=word}
:如果parameter
变量值为空,则word
替代变量值,且返回其值${parameter:?word}
:如果parameter
变量值为空,word
当作stderr
输出,否则输出变量值
${parameter:+word}
:如果parameter
变量值为空,什么都不做,否则word
返回# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。