首页 > 系统相关 >Linux 06 Shell

Linux 06 Shell

时间:2023-05-30 10:34:35浏览次数:41  
标签:linuxprobe Shell 06 echo sh chkscore Linux root bash

Shell 脚本

  • 脚本声明
#!/bin/bash
  • 脚本注释
# example script
  • 脚本命令
uptime
free -h
reboot
  • 脚本执行
$ cat xiaoxian.sh
#!/bin/bash
# xiaoxian.sh
# this script is test
# 2023-05-09

date
ls -l
free -h
uname -a

$ bash xiaoxian.sh

接收用户输入

$ cat haha.sh
#!/bin/bash
# haha.sh
echo $0
echo $1,$3,$5
echo $#,$*

$ bash haha.sh a b c d e f g
haha.sh
a,c,e
7,a b c d e f g

判断用户输入

  • 文件
  • 逻辑
  • 整数
  • 字符串

文件测试语句

  • 文件包含一般、目录、设备(块)、链接、管道文件
  • -d 测试文件是否为目录类型
  • -e 测试文件是否存在
  • -f 判断是否为一般文件
  • -r 测试当前用户是否有权限读取
  • -w 测试当前用户是否有权限写入
  • -x 测试当前用户是否有权限执行
$ [ -e /dev/fstab ]
$ echo $?
1
$ [ -e /etc/fstab ]
$ echo $?
0
$ [ -w /etc/fstab ]
$ echo $?
0
  • 1 : 存在
  • 2 : 一般
  • 3 : 可以写入

逻辑测试语句

  • &&
  • ||
  • !
[root@linuxprobe ~]# [ -e /etc/fstab ] && echo "ok"
ok
[root@linuxprobe ~]# su - linuxprobe
[linuxprobe@linuxprobe ~]$ [ $USER = root ] && echo "Admin" || echo "User"
User
[linuxprobe@linuxprobe ~]$ exit
logout
[root@linuxprobe ~]#[ $USER = root ]
[root@linuxprobe ~]# echo $?
0
[root@linuxprobe ~]# [ ! $USER = root ]
[root@linuxprobe ~]# echo $?
1

整数测试语句

  • -eq 是否等于
  • -ne 是否不等于
  • -gt 是否大于
  • -lt 是否小于
  • -le 是否小于等于
  • -ge 是否大于等于
[root@linuxprobe ~]# [ 10 -gt 10 ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# [ 10 -eq 10 ]
[root@linuxprobe ~]# echo $?
0
[root@linuxprobe ~]# [ `free -m | grep Mem | awk '{print $4}'` -lt 1024 ] && echo "mem less than 1024M" || echo "enough mem"
mem less than 1024M
[root@linuxprobe ~]# [ `free -m | grep Mem | awk '{print $4}'` -lt 100 ] && echo "mem less than 100M" || echo "enough mem"
enough mem

字符串测试语句

  • = 比较字符串内容是否相同
  • != 比较字符串内容是否不同
  • -z 判断字符串内容是否为空
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
0
[root@linuxprobe ~]# echo $String

[root@linuxprobe ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US

流程控制

if 条件测试语句

# 单分支
[root@linuxprobe ~]# cat haha.sh 
#!/bin/bash
# haha.sh
if [ ! -d /dev/hahaha ]
then
	mkdir -p /dev/hahaha
fi
[root@linuxprobe ~]# ls -ld /dev/hahaha
ls: cannot access '/dev/hahaha': No such file or directory
[root@linuxprobe ~]# bash haha.sh 
[root@linuxprobe ~]# ls -ld /dev/hahaha
drwxr-xr-x. 2 root root 40 May 12 00:54 /dev/hahaha
# 双分支
[root@linuxprobe ~]# cat chkhost.sh 
#!/bin/bash
# chkhost.sh
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
	echo "$1 is online"
else
	echo "$1 is offline"
fi
[root@linuxprobe ~]# bash chkhost.sh 127.0.0.1
127.0.0.1 is online
[root@linuxprobe ~]# bash chkhost.sh 192.168.10.10
192.168.10.10 is offline
# 多分支
[root@linuxprobe ~]# cat chkscore.sh 
#!/bin/bash
# chkscore.sh
read -p "Enter your score (0-100): " GRADE
if [ $GRADE -gt 100 ] || [ $GRADE -lt 0 ]
then
	echo "$GRADE is Error!"
elif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then
	echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
	echo "$GRADE is Pass"
else
	echo "$GRADE is Fail"
fi
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): 60
60 is Fail
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): 70
70 is Pass
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): 90
90 is Excellent
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): 101     
101 is Error!
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): -1
-1 is Error!
[root@linuxprobe ~]# bash chkscore.sh 
Enter your score (0-100): aaaaa
chkscore.sh: line 4: [: aaaaa: integer expression expected
chkscore.sh: line 4: [: aaaaa: integer expression expected
chkscore.sh: line 7: [: aaaaa: integer expression expected
chkscore.sh: line 10: [: aaaaa: integer expression expected
aaaaa is Fail

for 语句

#!/bin/bash
# haha.sh
read -p "Enter: " PASSWD
for UNAME in `cat user.txt`
do
	id $UNAME &> /dev/null
	if [ $? -eq 0 ]
	then
		echo "$UNAME already existed."
	else
		useradd $UNAME &> /dev/null
		echo $PASSWD | passwd --stdin $UNAME &> /dev/null
	fi
done
#!/bin/bash
# haha.sh
for IP in `cat ip.txt`
do
	ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
	if [ $? -eq 0 ]
	then
		echo "$IP is online"
	else
		echo "$IP is offline"
	fi
done

while 语句

case 语句

标签:linuxprobe,Shell,06,echo,sh,chkscore,Linux,root,bash
From: https://www.cnblogs.com/berthua/p/17386630.html

相关文章

  • Shell - shell中的运算符
    基本语法使用案例   基本语法$((运算式))$[运算式]  使用案例#第一种写法a=10b=20c=`expr${a}+${b}`echo"$c"#第二种写法c=$[`expr10+20`]echo"$c"#第三种写法c=$[10+20]echo"$c"#计算3加2的值expr3+2#计算3减2的值e......
  • linux学习1
    \documentclass[a4paper,11pt]{article}\usepackage[top=3cm,bottom=3cm,left=2cm,right=2cm]{geometry}\usepackage[utf8]{inputenc}\usepackage{textcomp}\usepackage{graphicx}\usepackage{amsmath,amssymb}\usepackage{bm}\usepackage{ifpdf}\if......
  • linux2
    \documentclass{ctexart}\begin{document}\tableofcontents\title{Shell}\begin{abstract}secondclass\end{abstract}\section{introduction}到目前为止,我们已经学习来如何在shell中执行命令,并使用管道将命令组合使用。但是,很多情况下我们需要执行一系列的操作并使用条......
  • linux4
    tclass{ctexart}\begin{document}\tableofcontents\title{Shell}\begin{abstract}secondclass\end{abstract}\section{introduction}格式化:将硬盘分成一个个固定大小的block,并且生成一个表明了位置的inode链表号用来储存文件IDE硬盘SCSI/SATA/USB硬盘表示操作时间(读......
  • linux3
    \documentclass{ctexart}\begin{document}\tableofcontents\title{Shell}\begin{abstract}secondclass\end{abstract}\section{introduction}写作和写代码其实是两项非常不同的活动。当我们编程的时候,会经常在文件间进行切换、阅读、浏览和修改代码,而不是连续编写一大段......
  • 检测CPU,内存,磁盘使用率shell
    检测CPU,内存,磁盘使用率shell 1.检测CPU,内存,磁盘使用率超过80%,则发送邮件告警#!/bin/bash#当前主机ipHOST=$(ipashoweth0|grep'\inet\b'|awk'{print$2}'|sed's/\/.*//')#告警邮箱[email protected]#磁盘使用百分比阈值DISK_USAGE_THRESHOLD=80#CPU......
  • 一分钟学一个 Linux 命令 - ls
    前言大家好,我是god23bin。今天我给大家带来的是Linux命令系列,每天只需一分钟,记住一个Linux命令不成问题。今天,我们要介绍的是一个常用而又强大的命令:ls(list)。什么是ls命令?ls命令来自英文单词list,动词意思译为「列出」。ls命令用于列出指定目录中的文件和子目录及其......
  • CentOS Linux基础操作
    CentOSLinuxLinux基础操作ifconfig查看端口号ls查看当前文件夹下内容-a显示指定文件夹下隐藏文件-l以列表的方式显示该文件夹-h配合-l显示文件大小ll的本质是ls-l,只是ll是Linux的第三方插件,系统如果没有安装,会显示没有此命令。pw......
  • 算法学习day30回溯part06-332、51、37
    packageLeetCode.backtrackpart06;importjava.util.ArrayList;importjava.util.Collections;importjava.util.LinkedList;importjava.util.List;/***332.重新安排行程*给你一份航线列表tickets,其中tickets[i]=[fromi,toi]表示飞机出发和降落的机场地点......
  • 2023.5.29Linux系统压缩打包
    02.Linux系统压缩打包1.zip压缩工具2.TAR压缩工具3.TAR实践案例windows下我们接触最多的压缩文件就是rar格式,但linux有自己所特有的压缩工具如果希望windiows和linux互相能使用的压缩工具,建议.zip格式压缩的好处主要有节省磁盘空间占用率节省网络传输带宽消耗网络传输更......