-------------------------------------------------------
if [ $xxx=a -a $xx=b ]
a means and
我想在[]里做一个判断,如满足a或b才执行,那么中间的符号是什么?
-------------------------------------------------------
if [ $xxx=a -o $xx=b ]
o means or
-------------------------------------------------------
if [ $xxx=a ] && [ $xx=b ]
&& means and
我想在[]里做一个判断,如满足a或b才执行,那么中间的符号是什么?
-------------------------------------------------------
if [ $xxx=a ] || [ $xx=b ]
|| means or
的最简单形式::
#!/bin/bash
echo -n "Enter your name:"
read
echo "hello $name,welcome to my program"
exit 0
//********************************
由于read命令提供了-p参数,允许在read命令行中直接指定一个提示。
所以上面的脚本可以简写成下面的脚本::
#!/bin/bash
read -p "Enter your name:" name
echo "hello $name, welcome to my program"
exit 0
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的set-user-id位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行
就是获取当前目录下的文件ls -i
awk:用于一行中分成数个“字段”来处理。适合处理 小型数据。 运行模式:awk '条件类型1{动作1} 条件类型2{动作2} ...' filename # last | awk '{print $1 "\t" $3}' <== 查看登录者的数据,只显示登录名和ip地址,并以[tab]隔开 awk 的内置变量 变量名称 代表的含义 NF 每一行($0)拥有的字段总数 NR 当前 awk 所处理的是 “第几行” 数据 FS 当前分隔符,默认空格键 awk 的逻辑运算符 运算单元 代表含义 > 大于 < 小于 >= 大于或等于 <= 小于或等于 == 等于 != 不等于 范例: cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}' <== 文件/etc/passwd是以":"分隔的,查看第三栏小于10的数据,并且只显示帐号与第三栏
6.删除当前目录下大小为0的文件
#/bin/bash
for filename in `ls` //符号是1边上哪个
do
if test -d $filename
then b=0
else
a=$(ls -l $filename | awk '{ print $5 }') //a边上不能有空格
if test $a -eq 0
then rm $filename
fi
fi
done