shell

本文介绍了一系列Shell脚本实用技巧,包括批量文件重命名的方法、使用grep排除特定内容的搜索方式、获取字符串长度及截取子字符串的操作,以及在Shell中进行算术运算的多种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

type ls 看它的类型和alias等
批量命名:


#!/bin/sh
  2 #rename all file
  3 i=0
  4
  5 case $1 in
  6 "redo")
  7        find . -name "*" -type f |while read p;doi
  8      #赋值没有不知道是为什么?fname=""等号之间不能有空格
  9      fname=$(basename $p)
 10      # echo "$fname"
 11        if [ $fname -ge 0 ] 2>/dev/null ;then
 12        mv $p $(dirname $p)/"test$((i++))"
 13        fi 
 14        done
 15  ;;    
 16 "rename")
 17  find . -name "test*" -type f |while read p;do
 18   fname =$(basename $p)
 19   #do just you like
 20   mv $p $(dirname $p)/"$fname$((i++))"
 21 done 
 22 ;;
 23 *) echo "not input";;




grep 不包括:
grep -v 


1.长度


[web97@salewell97 ~]$ test='I love china'
[web97@salewell97 ~]$ echo ${#test}
12


${#变量名}得到字符串长度


 


2.截取字串


[chengmo@localhost ~]$ test='I love china'
[chengmo@localhost ~]$ echo ${test:5}     
e china
[chengmo@localhost ~]$ echo ${test:5:10} //从第5个开始截取,截取10个
e china


${变量名:起始:长度}得到子字符串


vimrc  在/etc/vimrc中可以设置vim风格:
shell中加减
[szu@localhost etc]$ n=1
[szu@localhost etc]$ let "n=$n-1"   //let执行完了就没了,所以要有中间变量来保存它
[szu@localhost etc]$ echo $n
((i++))  
如果有中间变量那就可以用:
((i=$j+$k))    等价于 i=`expr $j + $k`
((i=$j-$k))     等价于   i=`expr $j -$k`
((i=$j*$k))     等价于   i=`expr $j \*$k`
((i=$j/$k))     等价于   i=`expr $j /$k`
Let expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。


例:let “I = I + 1” 或 let i=i+1
如果不用中间变量只是要把4+4的结果显示出来那么可以用:
[szu@localhost etc]$ echo `expr 4 + 3`
7
[szu@localhost etc]$ a=9
[szu@localhost etc]$ b=8
[szu@localhost etc]$ echo $[a+b]
17


[szu@localhost etc]$ echo $(($a+$b))
17


#!/bin/bash


#4.4.sh


s=0                                    #定义一个求和变量,初值为0。


t=`expr$1**$2`                        #用expr改变运算顺序,求x的y次方。


t=$[t*3]                               #t乘以3。


s=$[s+t]                               #结果相加。


t=$[$1**2]                             #求x的平方。


t=$[t*4]                               #结果乘以4。


s=$[s+t]                               #结果相加。


t=`expr$2*5`                          #求5y的值。


s=$[s+t]                               #结果相加。


s=$[s+6]                               #结果加上6。


echo$s                                #输出结果。


echo$((a%b))                          #取余


//截取字符串
[szu@localhost etc]$ echo $tanting
nicandoyi
[szu@localhost etc]$ echo ${tanting:`expr ${#tanting} - 4`:2}
do
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值