shell表达式与基本语句
一.shell 表达式
expr,let,awk常用命令或者( [] 执行基本的算数运算result=$[a+b])
算数运算
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
布尔运算 与或非 ! -o -a
! 取反 -o 或 -a 与
逻辑运算 || &&
字符串运算 = != -z -n $
-z 字符串长度是否为0 -n检查字符串长度是否不为0
文件测试运算符
-c 字符设备文件
-d 文件夹
-f 普通文件
-p 是否有管道文件
-rwx 文件读写执行权限
-e 存在(包括文件)
-s 文件大小是否为0
-L 管道文件
-S 套接字文件
二. 常见语句
shell脚本中的条件语句,循环语句,case 语句
条件语句
if [];then
else
fi
循环语句
//while 循环
while []
do
done
//for循环
for((i=0;i<10;i++));
do
done
//需要跳出循环 用braek continue与c语言用法一致;
//while无限循环
while true
do
command
done
//for无限循环
for (( ; ; ))
do
done
for循环条件一般格式
//for循环
for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10) --》等宽的01-10
for i in {1…10}
for i in $( ls )
for I in $(< file)
for i in “$@” --》取所有位置参数,可简写为for i
//case 语句
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
三. 示例
在etc目录寻找某个文件
for循环与条件语句
#!/bin/bash
file="testfile"
tmpfile="test"
read -p "please enter a file name:" file
for tmpfile in $(ls /etc)
do
if [ $tmpfile = $file ];then
echo -e "\033[31m$file\033[0m"
fi
done
case语句
#!/bin/bash
i=0
read -p "please enter a number:" i
case $i in
1)
echo -e "\033[31mtest1\033[0m"
;;
2)
echo -e "\033[31mtest2\033[0m"
;;
3)
echo -e "\033[31mtest3\033[0m"
;;
4)
echo -e "\033[31mtest4\033[0m"
;;
*)
echo -e "\033[31mtest other\033[0m"
;;
esac