shell脚本笔记

1、使用awk命令获取文本的某一行,某一列

1、打印文件的第一列(域)                 : awk '{print $1}' filename
2、打印文件的前两列(域)                 : awk '{print $1,$2}' filename
3、打印完第一列,然后打印第二列  : awk '{print $1 $2}' filename
4、打印文本文件的总行数                 : awk 'END{print NR}' filename
5、打印文本第一行                            : awk 'NR==1{print}' filename
6、打印文本第二行第一列                 : sed -n "2, 1p" filename | awk 'print $1'


2、文件比较运算符 

1. -e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]     
    -s 文件存在并且文件size大于0
    -S 文件存在并且文件是socket文件
2. -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ] 
3. -b 块设备 -c 字符设备
4.-h filename 如果 filename存在且是一个软链接时,则为真
5. -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ] 
6. -L filename 如果 filename为符号链接,则为真 如: [ -L /usr/bin/grep ] 
7. -r filename 如果 filename可读,则为真 如: [ -r /var/log/syslog ] 
8. -w filename 如果 filename可写,则为真 如: [ -w /var/mytmp.txt ] 
9. -x filename 如果 filename可执行,则为真 如: [ -L /usr/bin/grep ] 
10. filename1-nt filename2 如果 filename1比 filename2新,则为真 如: [ 
/tmp/install/etc/services -nt /etc/services ] 
11. filename1-ot filename2 如果 filename1比 filename2旧,则为真 如: [ 
/boot/bzImage -ot arch/i386/boot/bzImage ]


3、字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法) 

 1. -z string  如果 string长度为零,则为真 如:  [ -z "$myvar" ]
 2. -n string  如果 string长度非零,则为真  如: [ -n "$myvar" ]
 3. string1= string2  如果 string1与 string2相同,则为真 如:  [ "$myvar" = "one two three" ]
 4. string1!= string2  如果 string1与 string2不同,则为真 如:  [ "$myvar" != "one two three" ]

 
4、算术比较运算符 

1. num1-eq num2  等于         如: [ 3 -eq $mynum ]
 2. num1-ne num2  不等于     如: [ 3 -ne $mynum ]
 3. num1-lt num2  小于         如: [ 3 -lt $mynum ]
 4. num1-le num2  小于或等于如: [ 3 -le $mynum ]
 5. num1-gt num2  大于      如: [ 3 -gt $mynum ]
 6. num1-ge num2  大于或等于如: [ 3 -ge $mynum ]

5、布尔运算符

!    非运算,表达式为 true 则返回 false,否则返回 true。    [ ! false ] 返回 true。
-o    或运算,有一个表达式为 true 则返回 true。    [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a    与运算,两个表达式都为 true 才返回 true。    [ $a -lt 20 -a $b -gt 100 ] 返回 false。

6、逻辑运算符

&&    逻辑的 AND    [[ $a -lt 100 && $b -gt 100 ]] 返回 false
||    逻辑的 OR    [[ $a -lt 100 || $b -gt 100 ]] 返回 true

7、输出重定向 标准信息数字

1>/dev/null 2>&1

>前面的数字:
    0代表标准输入
    1代表stdout标准输出,默认值为1,所以”1>/dev/null”可以简写为”>/dev/null”,全部输入
    2代表stderr标准错误输出,只有命令返回异常的错误信息才会输入到后面,正常的信息会打印出来

2>&1
    代表把stderr标准错误输出 重定向 到1表示的stdout标准输出所在的地方,也就是 /dev/null

    注意2>1这里的1表示的是文件名,而不是标准输出
    /dev/null 代表空设备文件

    所以,1>/dev/null 2>&1的解释就是

    将stdout标准输出重定向到空设备文件/dev/null ,同时将stderr标准错误输出的重定向跟stdout标准输出重定向一致,也输出到空设备文件/dev/null。

8、shell参数

$0    脚本名
$1    参数1,以此类推
$#    参数个数
$*    所有参数内容
$@    所有参数
$?    上个命令或函数的返回值

9、不用if进行判断

[ "$SHOW_DETAIL" == "1" ] && echo "&&" || echo "||"
    []里面为真就执行&&后面的,为假就执行||后面的
[ "$SHOW_DETAIL" == "1" ] || echo "||"
    单独一个条件也适用
[ "$SHOW_DETAIL" == "1" ] && {
    echo "&&" 
} || {
    echo "||"
}
    条件中多行语句使用{}包括

注意:sh只能使用=,bash都可使用=和==

10、while循环实例

#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
do
  let sum=sum+$i
  let i++
done
#!/bin/sh

dev=sdb1
n=$1
a=1
while true
do 
	dd if=/dev/zero of=$n-$a.img bs=1M count=16 2>/dev/null
#	sync
	if [ $a -eq 66 ]; then 
		a=1
	else
		a=`expr $a + 1`	
	fi	
done

11、添加默认路由网关

ip route add default/0 via 192.169.5.1 dev eth0,默认走4G网络,没4G时设置默认走以太网。

linux_genvict:~# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 usb0
192.168.0.0     *               255.255.255.0   U     0      0        0 lmi40
192.168.1.0     *               255.255.255.0   U     0      0        0 usb0
192.168.8.0     *               255.255.255.0   U     0      0        0 eth0
192.168.42.0    *               255.255.255.0   U     0      0        0 rndis0
192.168.110.0   *               255.255.255.0   U     0      0        0 muap0
192.169.5.0     *               255.255.255.0   U     0      0        0 eth0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值