Shell速成手册-经典示例篇

Shell语言是学习Linux的基础。跟我来吧,13个经典的例子带你快速入坑。

01|cut应用-判断登陆用户是否是root

#!/bin/bash

test=$(env |grep USER| cut -d "=" -f 2)

if [ $test == "root" ]

then

echo $test

fi

02|awk应用-判断分区使用率

#!/bin/bash

test=$(df -h |grep sda5 | awk ''|cut -d '%' -f 1)

if [ "$test" -ge "80" ]

then

echo "exceed"

else

echo "ok"

fi

03|if双分支应用-判断apche服务是否启动

test=$(ps aux|grep httpd|grep -v grep)

#截取apche命令 赋予test

if [ -n "$test" ]

then

echo "apache is ok"

else

echo "apache is not ok"

/etc/rc.d/init.d/httpd start

fi

4|if多分支应用-计算器做加减运算

#!/bin/bash

read -p 'plase enter num1:' -t 30 num1

read -p 'please enter num2:' -t 30 num2

read -p 'please enter opt:' -t 30 opt

if [ -n $num1 -a -n $num2 ]

then

test1=$(echo $num1|sed 's/[0-9]//g')

test2=$(echo $num2|sed 's/[0-9]//g')

#test1和test2都会空代表输入的都是数字

if [ -z $test1 -a -z $test2 ]

then

if [ $opt == '+' ]

then

sum=$(($num1+$num2))

elif [ $opt == '-' ]

then

sum=$(($num1-$num2))

elif [ $opt == '*' ]

then

sum=$(($num1*$num2))

elif [ $opt == '/' ]

then

sum=$(($num1/$num2))

else

echo 'qing shuru valid opt'

fi

else

echo 'qing shuru num1 and num2'

fi

else

echo 'please enter something'

fi

echo $sum

05|文件判断-用户输入的是什么文件

#!/bin/bash

read -p 'please enter a file path:' -t 30 file

if [ -z $file ]

then

echo '不能输入空值!'

elif [ ! -e $file ]

then

echo '请输入正确的文件名!'

exit 11

elif [ -d $file ]

then

echo '这是一个目录。'

exit 12

elif [ -f $file ]

then

echo '这是一个文件。'

exit 12

else

echo '$file 是其他文件'

fi

06|case语句应用

#!/bin/bash

read -p '请输入1进行选择' -t 30

read -p '请输入2进行选择' -t 30

read -p '请输入3进行选择' -t 30

read -p '进入选择面板!请输入数字进行选择:' -t 30 num

case $num in

"1")

echo "你选择了1号"

;;

"2")

echo "你选择了2号"

;;

"3")

echo "你选择了3号"

;;

*)

echo "输入的数字不正确"

;;

esac

07|for语句应用循环打印数字

#!/bin/bash

for i in "$*"

do

echo $i

done

08|for语句应用求和

#!/bin/bash

s=0

for ((i=1 ;i

do

s=(($s+$i))

done

echo $s

09|for语句应用批量增加用户

#!/bin/bash

read -p 'enter username:' -t 30 name

read -p 'enter passwd:' -t 30 passwd

read -p 'enter nums for user:' -t 30 num

if [ -n name -a -n passwd ]

then

if [ -z $(echo "$num"|sed 's/[0-9]//g') ]

then

for (( i=1;i

do

/usr/sbin/useradd $name$i >/dev/null

echo $passwd |/usr/bin/passwd --stdin $name$i >/dev/null

done

else

echo 'num must be a number!!'

fi

else

echo 'name and passwd must not be null!!'

fi

10|for语句应用 批量删除用户

#!/bin/bash

for i in $(cat /etc/passwd|grep swd|cut -d ':' -f 1)

do

/usr/sbin/userdel $i

echo 'del user~~~~'$i

done

11|while语句应用-求和

#!/bin/bash

i=1

s=0

while [ $i -le 100 ]

do

s=$(( $s+$i ))

i=$(( $i+1 ))

done

echo 'the sum is '$s

12|until语句应-求和

#!/bin/bash

i=1

s=0

until [ $i -gt 100 ]

do

s=$(( $s+$i ))

i=$(( $i+1 ))

done

echo 'the sum is '$s

13|获取linux的网络配置信息/系统内存/系统负载/磁盘容量

#!/bin/bash

if [[ $# -eq 0 ]]

then

reset_terminal=$(tput sgr0)

echo $reset_terminal

ostype=$(uname -o)

osname=$(cat /etc/issue)

machine=$(uname -m)

releaseversion=$(uname -r)

internalip=$(hostname -I)

externalip=$(curl -s

http://ipecho.net/plain)

dnsserversname=$(cat /etc/resolv.conf |grep '^nameserver'|awk '')

echo "optype--"$ostype

echo "osname--"$osname

echo "machine--"$machine

echo "releaseversion--"$releaseversion

echo "internalip--"$internalip

echo "externalip--"$externalip

echo "dnsservers--"$dnsserversname

#loggin user

who>/tmp/who

rm -rf /tmp/who

fi

后记:

这些都是考试必考的。嗯。背下来。

汇总一下下:

01|cut应用-判断登陆用户是否是root

02|awk应用-判断分区使用率

03|if双分支应用-判断apche服务是否启动

04|if多分支应用-计算器做加减运算

05|文件判断-用户输入的是什么文件

06|case语句应用

07|for语句应用循环打印数字

08|for语句应用求和

09|for语句应用批量增加用户

10|for语句应用 批量删除用户

11|while语句应用-求和

12|until语句应-求和

13|获取linux的网络配置信息/系统内存/系统负载/磁盘容量

——END——

关于程序媛的点滴,技术/职场/生活。

欢迎来稿~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180921G1X3V900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券