一些简单的shell脚本实例

2023-05-16

自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油!

1.模拟linnux登录shell

#/bin/bash
echo -n "login:"
read name
echo -n "password:"
read passwd
if [ $name = "cht" -a $passwd = "abc" ];then
echo "the host and password is right!"
else echo "input is error!"
fi

2.比较两个数大小

#/bin/bash
echo "please enter two number"
read a
read b
if test $a -eq $b
then echo "NO.1 = NO.2"
elif test $a -gt $b
then echo "NO.1 > NO.2"
else echo "NO.1 < NO.2"
fi

3.查找/root/目录下是否存在该文件

#/bin/bash
echo "enter a file name:"
read a
if test -e /root/$a
then echo "the file is exist!"
else echo "the file is not exist!"
fi

4.for循环的使用

#/bin/bash
clear
for num in 1 2 3 4 5 6 7 8 9 10
do
echo "$num"
done

5.

#/bin/bash
echo "Please enter a user:"
read a
b=$(whoami)
if test $a = $b
then echo "the user is running."
else echo "the user is not running."
fi

6.删除当前目录下大小为0的文件

#/bin/bash
for filename in `ls`
do
if test -d $filename
then b=0
else
a=$(ls -l $filename | awk '{ print $5 }')
if test $a -eq 0
then rm $filename
fi
fi
done

7.如果/export/um_lpp_source下有文件,那么将其文件系统大小改为3G

#/bin/bash
while line=`ls /export/um_lpp_source`
do
if test $line=""
then echo "NULL"
sleep 1
else echo $line
chfs -a size=3G /export/um_lpp_source
exit 0
fi
done

8.测试IP地址

#/bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
echo "the number of $i computer is "
ping -c 1 192.168.0.$i
done

9.如果test.log的大小大于0,那么将/opt目录下的*.tar.gz文件

#/bin/sh
a=2
while name="test.log"
do
sleep 1
b=$(ls -l $name | awk '{print $5}')
if test $b -ge $a
#then echo "OK"
then `cp /opt/*.tar.gz .`
exit 0
fi
done

10.打印读取的内容,为下面的例子做准备

#/bin/bash
while read name
do
echo $name
done

11.从0.sh中读取内容并打印

#/bin/bash
while read line
do
echo $line
done < 0.sh

12.读取a.c中的内容并做加1运算

#/bin/bash
test -e a.c
while read line
do
a=$(($line+1))
done < a.c
echo $a

13.普通无参数函数

#/bin/bash
p ()
{
echo "hello"
}
p

14.给函数传递参数

#/bin/bash
p_num ()
{
num=$1
echo $num
}
for n in $@
do
p_num $n
done

15.创建文件夹

#/bin/bash
while :
do
echo "please input file's name:"
read a
if test -e /root/$a
then
echo "the file is existing Please input new file name:"
else
mkdir $a
echo "you aye sussesful!"
break
fi
done

16.获取本机IP地址

#/bin/bash
ifconfig | grep "inet addr:" | awk '{ print $2 }'| sed 's/addr://g'

17.查找最大文件

#/bin/bash
a=0
for name in *.*
do
b=$(ls -l $name | awk '{print $5}')
if test $b -ge $a
then a=$b
namemax=$name
fi
done
echo "the max file is $namemax"

18.查找当前网段内IP用户,重定向到ip.txt文件中

#/bin/bash
a=1
while :
do
a=$(($a+1))
if test $a -gt 255
then break
else
echo $(ping -c 1 192.168.0.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')
ip=$(ping -c 1 192.168.0.$a | grep "ttl" | awk '{print $4}'| sed 's/://g')
echo $ip >> ip.txt
fi
done

19.打印当前用户

#/bin/bash
echo "Current User is :"
echo $(ps | grep "$$" | awk '{print $2}')

20.case语句练习

#!/bin/bash
clear
echo "enter a number from 1 to 5:"
read num
case $num in
1) echo "you enter 1"
;;
2) echo "you enter 2"
;;
3) echo "you enter 3"
;;
4) echo "you enter 4"
;;
5) echo "you enter 5"
;;
*) echo "error"
;;
esac

21.yes/no返回不同的结构

#!/bin/bash
clear
echo "enter [y/n]:"
read a
case $a in
y|Y|Yes|YES) echo "you enter $a"
;;
n|N|NO|no) echo "you enter $a"
;;
*) echo "error"
;;
esac

22.

23.内置命令的使用

#/bin/bash

clear
echo "Hello, $USER"
echo

echo "Today 's date id `date`"

echo

echo "the user is :"
who
echo

echo "this is `uname -s`"
echo

echo "that's all folks! "

24.

25.

#/bin/bash

26.打印无密码用户

#/bin/bash
echo "No Password User are :"
echo $(cat /etc/shadow | grep "!!" | awk 'BEGIN { FS=":" }{print $1}')

27.

#/bin/bash

clear
echo "Hello, $USER"
echo

echo "Today 's date id `date`"

echo

echo "the user is :"
who
echo

echo "this is `uname -s`"
echo

echo "that's all folks!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一些简单的shell脚本实例 的相关文章

随机推荐

  • 5.8G公路协议开发 小结1

    5 8G高速公路协议开发 小结 1 5 8G高速公路协议 xff08 1 xff09 高速公路的标识点天线协议 xff08 简称自由流协议 自由流收费指的是在行车的过程中不知不觉就收取了一定的费用 在收费点的时候我们再也不用停车等待缴费 x
  • BUG小结之-网络编程的通讯问题回顾

    问题 代码和驱动确定无误 xff0c 但是无法正常收发信息 xff1b 现象 xff1a 1 UDP可以正常收数据 xff08 经过打印验证过了 xff09 xff0c 但是无法发回网口助手 xff1b 2 网络调试助手无法自动寻找和映射i
  • bug-make绝对路径相对路径-flage

    绝对路径变相对路径
  • linux网络通讯的虚拟IP的开发设计(双IP的开发)

    虚拟IP 即在一个物理IP xff08 比如这个IP为192 168 2 29 xff09 的基础上 xff0c 绑定其他的IP xff08 比如192 168 1 xxx xff09 xff0c 用windows的话说 xff0c 就是为
  • linux UDP通讯的地址选择-flag

    单播和广播的设定 UDP通讯总结可以参考链接 https blog csdn net xiaoxilang article details 80839797
  • linux-Ubuntu安装后续工作小结-flag

    flage目的 xff1a 1 由于操作不熟练 xff0c 被某人鄙视了一次 2 常温习 xff0c 防遗忘 xff0c 快速解决 xff0c 提高效率 1 安装Ubuntu xff08 1 xff09 制作ubuntu启动U盘 制作用ru
  • RemoteFX usb设备重定向-USB虚拟机重映射

    1 usb设备重定向 实现的效果 xff0c 如图1 各种usb 串口 视频usb 打印机 xff01 xff01 如果你参考我的资料 xff0c 依然不能解决问题 xff0c 可以参考博客 xff1a https yq aliyun co
  • shell编程、ssh-root量产、ping-IP脚本操作 问题-flag

    1 su root Authentication failure问题的解决 su su root 命令不能切换root xff0c 提示su Authentication failure 只要你sudo passwd root过一次之后 x
  • linux编译器的下关于gcc、g++、make和CMake几个概念的区别

    1 什么是gcc g 43 43 首先说明 xff1a gcc 和 GCC 是两个不同的东西 GCC GNU Compiler Collection GUN编译器集合 xff0c 它可以编译C C 43 43 JAV Fortran Pas
  • linux-vim编辑工具的基础的常用操作 小结

    1 设置行号 xff08 临时设置和永久性设置 xff09 临时设置 如果要显示该文件的所有行号 xff0c 则需要在vim的命令模式下输入 set nu 设置显示行号 xff0c 等同setnumber set nonu xff08 取消
  • 内网离线安装vscode插件

    一 官网下载vscode安装包 xff08 https code visualstudio com xff09 下载之后将安装包拷贝到需要的电脑进行安装并创建桌面快捷方式 二 vscode插件官网 xff08 https marketpla
  • usb/uart转网口模块选型设计 小结

    选型原则 通讯速率尽量可能快 xff0c 工作温度必须是工业级的 xff0c 成本尽量可能低 xff1b 保证用户可操作空间较大 1usb转网口 AX88772BLI xff0c ZLAN1003 xff0c IP101GRI xff08
  • Git bash基础操作指令 小结

    1 常用git指令 git的安装配置 xff08 只有初次使用需要配置 xff09 用户名和邮件 git config global user name 34 noxue 34 git config global user email ad
  • linux-ARM开发板--嵌入式开发平台-选型

    最近有一个项目以前一直在用工控机实现 xff0c 现在需要优化功能 缩减成本 xff0c 故有寻找linux ARM开发板的需求 xff1b 后期有很大可能还会自己会画PCB板 内核裁剪等设计的需求 xff1b 1 根据需求 xff0c 限
  • linux 线程与进程 -2-多线程应用编程

    多线程的管理 多线程的互斥锁和条件变量的使用 xff01 什么是进程 进程 xff08 process xff09 是一个已经开始执行但还没终止的程序实例 Linux系统下使用ps 命令可以查看到当前正在执行的进程 每个进程包含有进程运行环
  • 基于ARM开发板或linux工控机的远程操作的小结

    需求 xff1a xff08 1 xff09 黑龙江现场A处有一个一直在执行任务的工控机 xff08 或ARM板 xff09 xff0c 该板子处在一个局域网192 xxx 2 1网段 xff0c 局域网可以联网 xff1b xff08 2
  • linux-Ubuntu server输出.csv文件方法 小结

    导语 xff1a 在ARM上或在其他芯片上做开发 xff0c 有时候会有这样的需求 xff0c 将你工控机 开发板或者你的设备采集出来的数据做成一个exc列表 xff1b 最简单的方式就是用数据直接输出为 txt文件 xff0c 但是这样并
  • arm板/工控机 连接外网 小结

    arm板外网连接的总结 1 判断自己的开发板或者虚拟机是否连接外网的方式非常简单 直接ping外网的一个ip即可 xff0c 比如ping百度 2 如果arm开发板ping外网不同有几个思路去修复 xff08 1 xff09 先检查你的外网
  • Cannot access androidx.lifecycle.HasDefaultViewModelProviderFactory 警告

    项目androidx中 报警告 Cannot access androidx lifecycle HasDefaultViewModelProviderFactory 但是不影响运行 xff0c 解决方法 xff1a ViewModel a
  • 一些简单的shell脚本实例

    自己写了一下小的shell实例 xff0c 虽然很小 xff0c 但所有的大的程序都是由小的模块堆积起来的 xff0c 程序员一定要懂得一种脚本的书写 xff0c 而我 xff0c 只会在linux下工作 xff0c 所以就只能写linux