学习shell基础命令

学习shell基础命令
''
单引里面写什么就是什么

""
双引里面写什么就是什么(如果有变量会把变量的量显示出来)

``
与下面的$()一样,优先执行完得出结果
$()

测试
[] 中括号里面都要有空格

-f 测试是否为文件
例: [ -f /etc/passwd ] && echo '真的是个文件' //成功的
[ -f /home ] && echo '真的是个文件' // 失败的

-d 测试是否为目录
例: [ -d /etc/passwd ] && echo '真的是个文件夹' // 失败的
[ -d /home] && echo '真的是个文件夹' //成功的

-e 测试是否存在
例: [ -e /mnt/cdrom ] && echo '是的存在'

&& 逻辑与( 前面如果能执行成功则后面接着执行 )
|| 逻辑或( 前面如果能执行成功则后面的不执行,前面执行不成功则后面接着执行 )

-r 测试有读的权限吗
[ -r /etc/passwd ] && echo '是的有读取的权限'

-w 测试有写的权限吗

-x 测试有执行的权限吗

比对测试

-eq 测试是否为相等
例:
a=100
b=98
[ $a -eq $b ] && echo '是的它们是相等的'
b=100
[ $a -eq $b ] && echo '是的它们是相等的'

-ne 测试是否为不相等

-gt 测试是否为大于

-lt 测试是否为小于

判断if

单分支的if
if [ 条件测试 ]
then
do
fi

例子:
cat > for-free.sh <<end
#!/bin/bash
a=$(free -m |grep -i mem |awk '{print $4}')
if [ $a -gt 100 ]
then
echo "现在可用内存为$a ,够你用"
fi
end
chmod +x for-free.sh
./for-free.sh

双分支的if
if [ 条件测试 ]
then
do
else
do
fi

例子:
cat >>for-5.sh <<end
a=$(free -m |grep -i mem |awk '{print $4}')
if [ $a -gt 100 ]
then
echo "现在可用内存为$a ,够你用"
else
echo "现在可用内存为$a ,不够你用"
fi
end
chmod +x for-5.sh
./for-5.sh

cat >for-sdd.sh <<end
#!/bin/bash
echo "这是一个判断/dev/sdd磁盘使用量的脚本"
pan=$(df -Th |grep /dev/sdd |awk '{print $5}' |cut -d G -f 1 )
if [ $a -gt 7 ]
then
echo “现在的/dev/sdd使用量为 $pan G,说明磁盘还够用”
else
echo “现在的/dev/sdd使用量为 $panG,说明磁盘不够用”
fi
end

chmod +x for-sdd.sh
./for-sdd.sh

多分支的if
if [ 条件测试 ]
then
do
elif [ 条件测试 ]
do
elif [ 条件测试 ]
do
elif [ 条件测试 ]
do
elif [ 条件测试 ]
do
elif [ 条件测试 ]
do
elif [ 条件测试 ]
do
else
do
fi

例:
cat >for-number.sh <<end
#!/bin/bash
echo '这是一个查看成绩等级的脚本'
read -p '请输入你所得的成绩:' int
if [ $int -ge 90 -a $int -le 100 ]
then
echo '你的成绩等级为优等生'
elif [ $int -ge 80 -a $int -le 89 ]
then
echo '你的成绩等级为次优等生'
elif [ $int -ge 70 -a $int -le 79 ]
then
echo '你的成绩等级良等生'
elif [ $int -ge 60 -a $int -le 69 ]
then
echo '你的成绩等级为及格生'
else
echo '你的成绩系统判定为补考'
fi
end
chmod +x for-number.sh
./for-number.sh

猜你喜欢

转载自blog.51cto.com/14861926/2512904