[SHELL] 注意点和一些常用方法(不断更新)

一、 sed用法 (只介绍本人目前应用到2种)

1.sed -i  " s# AAA#BBB#"  CCC
 在 CCC中 用BBB替换AAA    
 -i 表示把 把修改写入文件

2.sed -i "AAA s#\(BBB=\).*#\1CCC#"  DDD
\( ... \) 这个是组的概念,后面用\1来原封不动地引用
此用法相当于AAA为变量名称 修改AAA变量的值

来个例子说明:
脚本内容:
	#!/bin/bash
	#\( ... \) 这个是组的概念,后面用\1来原封不动地引用
	sed -i "/BBB/ s#\(.*=\).*#\1$1#" AAA.txt 
文件内容:
	文件名字 AAA.txt
	BBB=11111 
运行脚本:
	./test.sh 22222
运行脚本后的结果:
	BBB=22222

二、 shell脚本中的local 值只能用于 function 方法中不能用于脚本中

例如
#!/bin/sh
local test  # 这种使用方法是错误的
function aaa()
{
 local test2 # 这样子才是正确的使用方法
}

三、shell 脚本中的 return 只能 return int 不能 return 字符

例如
#!/bin/sh
function A ()
{
 return testA # 介个是不正确的
}
function B ()
{
  return 1 #几个是正确的
}

四、shell 脚本中的相当于截取命令(非cut)

例如:
#!/bin/sh
X="HelloBoy"
Y="Hello"
# 现在你想获取 Boy 这个字符 可以使用
Z=$(X#$Y)
#Z的值就是Boy 
# 注意的是 X前面没有 “$” 符号

五、 shell 脚本判断上一指令返回值

例如:
#/bin/bash                                                                                                                      
# 利用上面例子测试
X="HelloBoy"
echo $?
Y="Hello"
# 通过四 可以知道 下面这种写法是错误的
Z=${$X#$Y}
echo $?

打印结果:
0
./test.sh: line 7: ${$X#$Y}: bad substitution
1

说明:当上一指令没有报错完成后 返回0 如果报错返回非0 不一定是1

六、shell 删除除了xxx文件的所有文件

方法一

#!/bin/sh                                                                                                      
find . -maxdepth 1 -type f ! \(  -name 'aaa' -o -name 'ccc' \) -exec echo rm -f {} \;
 
稍微说明一下  

-maxdepth 1    :  说明查找的深度

-type f                :  查找的文件类型

-name               :  要文件的名字

-o                        : 连接的作用

-exec                  : find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格

因为 () 在shell 脚本有特殊用处 说以需要转义符 “\”


方法二

#!/bin/sh                                             
    ls -1 | grep -v '\<make.sh\>\|\<aaa\>\|\<ccc\>\|\<clean.sh\>' |  xargs  -i  rm -rf {}
跟第一种差不多就说一下

xargs  介个说白了 就是 把上一个命令运行下来的值给下一个命令使用


错误的方法:

#!/bin/sh                                                                                                                       
rm -rf !(aaa|ccc)

说明: 虽然 直接运行 rm -rf  !(aaa|ccc) 可以 但是 在shell 脚本中 “()” 有特殊使用的

注意  rm -rf  !(aaa|ccc)  "|"  2边没有空格






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值