脚本文件

一、读取参数

通过$1,$2这样表示读取的第一个第二个参数,$0是执行本个脚本文件的命令

 

二、判断文件(夹)是否存在

[ ! -d $1 ]:判断$1这个文件夹是否存在,不存在就创建

if [ ! -d $1 ]; then
  mkdir $1
fi

需要注意的是,需要用/连接两个参数来表示要创建的文件夹名字时,不能直接用/,而要用‘“将/括起来

if [ ! -d $1"/"$2 ]; then
  mkdir $1"/"$2
fi

 

三、文件名的处理

①根据路径名来提取文件名

因为有的处理需要对用旧的文件名来命名新的文件名,如将flac格式的音频文件转换为wav格式的文件

${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个/  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个.  及其左边的字符串:file.txt
${file##*.}:删掉最后一个.  及其左边的字符串:txt
${file%/*}:删掉最后一个 /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个/  及其右边的字符串:(空值)
${file%.*}:删掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 .   及其右边的字符串:/dir1/dir2/dir3/my

#表示删除左边,%表示删除右边,*表示匹配所有,所以在删除右边时是将匹配字符串*放在标识符(不论是/还是.)的右边,所以在删除右边时是将匹配字符串*放在标识符左边

②文件名的替换

主要是利用sed指令来实现:

newfile=`echo $file | sed 's/-//g'`

sedsed编辑器被称作流编辑器,以基于输入到命令行的或是存储在命令文本中的命令来处理数据流中的数据。它每次从输入中读取一行,用提供的编辑命令匹配数据、按命令中指定的方式修改流中的数据,然后生成的数据输出到STDOUT。

echo一般是用来处理文件中的字符串的,此时它是一次读一行,但是也有如上用来处理单独一个字符串的,此时就是用echo指令与管道 | 将要处理的字符串传给sed指令,sed指令的标准格式为

stdout | sed 's/pattern/replace/'

在上述例子中在末尾添加g用于替换所有匹配项,而不仅仅替换第一个匹配项,就是将stdout中的pattern替换为replace,当然有时还需要将字符串中的/符号进行替换,此时可以用其他的符号如#等来替换本来是作为各个参数之间的分隔符的/

`echo $1 | sed 's,//*,/,g'`

这个指令的含义就是将第一个参数中的//,或///这样连续两个及以上的/替换为一个/

 

四、字符串与变量的连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值