博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell script练习
阅读量:5770 次
发布时间:2019-06-18

本文共 7200 字,大约阅读时间需要 24 分钟。

执行脚本的几种方式:

1. sh a.sh 或者  bash a.sh  调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限。

2. 直接使用绝对路径执行, /home/script/a.sh  ,脚本需要有执行权限,如果没有权限可执行 chmod a+x a.sh 加入执行权限。

    (lampp启动数据库用的就是: /opt/lampp/lampp startmysql )

 

sh03.sh 根据时间创建目录

#!/bin/bashecho -e "I will use 'touch' command to create 3 files."read -p "Please input your filename:" fileuserfilename=${fileuser:-"filename"}echo $filenamedate1=$(date -d '-2 day' +%Y%m%d) #前两天的日期date2=$(date -d '-1 day' +%Y%m%d) #前一天的日期date3=$(date "+%Y%m%d")           #下面三行在配置文件名file1=${filename}${date1}file2=${filename}${date2}file3=${filename}${date3}touch "$file1"touch "$file2"touch "$file3"

 

sh04.sh 数字运算

#!/bin/bashecho -e "You SHOULD input 2 numbers,I will cross them!\n"read -p "first number: " firstnuread -p "second number: " secnutotal=$(($firstnu*$secnu))echo -e "\n The result of $firstnu x $secnu is ==> $total"

 

sh05.sh 使用 test 判断文件存在和权限

echo -e "Please input a filename,I will check the filename's type and permission. \n\n"read -p "Input a filename : " filenametest -z $filename && echo "You MUST input a filename." && exit 0test ! -e $filename && echo "The filename '$filename' DO NOT exist" && exit 0test -f $filename && filetype="regulare file"test -d $filename && filetype="directory"test -r $filename && perm="readable"test -w $filename && perm="$perm writable"test -x $filename && perm="$perm executable"echo "The filename:$filename is a $filetype"echo "And the permissions are : $perm"

 

sh06.sh 使用 [] 中括号做判断

read -p "Please input (Y/N):" yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue" && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh,interrupt!" && exit 0echo "I don't know what your choice is" && exit 0

 

sh07.sh 脚本传参

echo "The script name is ==> $0"echo "Total parameter number is ==> $#"[ "$#" -lt 2 ] && echo "The number of parameter is less than 2. Stop here."  && exit 0echo "Your whole parameter is ==> '$@'"echo "The 1st parameter ==> $1"echo "The 2nd parameter ==> $2"

 

sh08.sh shift去除参数

echo "Total parameter number is ==> $#"echo "Your whole parameter is ==> '$@'"shift  # 进行第一次 "一个变量的 shift "echo "Total parameter number is ==> $#"echo "Your whole parameter is ==> '$@'"shift 3 # 进行第二次 "三个变量的 shift "echo "Total parameter number is ==> $#"echo "Your whole parameter is ==> '$@'"

 

sh06-2.sh if...then 单层判断

read -p "Please input (Y/N):" ynif [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then  echo "OK,continue"  exit 0fiif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then  echo "Oh,interrupt!"  exit 0fiecho "I don't know what your choice is" && exit 0

 

sh06-3.sh  if...elif...else...fi 

read -p "Please input (Y/N):" ynif [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then  echo "OK,continue"  exit 0elif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then  echo "Oh,interrupt!"  exit 0else  echo "I don't know what your choice is" && exit 0fi

 

sh09.sh

if [ "$1" == "hello" ]; then  echo "Hello,how ary you?"elif [ "$1" == "" ]; then  echo "You MUST input parameters,ex> {$0 someword}"else  echo "The only parameter is 'hello',ex> {$0 hello}"fi

 

sh10.sh

echo "Now,I will detect your Linux server's services!"echo -e "The www, ftp, ssh, and mail will be detect! \n"testing=$(netstat -tuln | grep ":80 ")if [ "$testing" != "" ]; then  echo "WWW is running in your system."fitesting=$(netstat -tuln | grep ":22 ")if [ "$testing" != "" ]; then  echo "SSH is running in your system."fitesting=$(netstat -tuln | grep ":21 ")if [ "$testing" != "" ]; then  echo "FTP is running in your system."fitesting=$(netstat -tuln | grep ":25 ")if [ "$testing" != "" ]; then  echo "Mail is running in your system."fi

 

sh11.sh case...esac 判断

case $1 in  "hello")  echo "Hello,how are you?"  ;;"")  echo "You MUST input parameters,ex> {$0 someword}"  ;;*)  echo "The only parameter is 'hello',ex> {$0 hello}"  ;;esac

 

sh12.sh  

echo "This program will print your selection !"read -p "Input your choice: " choicecase $choice in#case $1 in "one")    echo "Your choice is ONE"  ;; "two")  echo "Your choice is TWO"  ;; "three")  echo "Your choice is THREE"  ;;*)  echo "Usage $0 {one|two|three}"  ;;esac

 

sh12-2.sh 使用function

function printit(){

echo -n "Your choice is " #加上 -n 可以不断行继续在同一行显示
}

echo "This program will print your selection !"

case $1 in
"one")
printit; echo $1 | tr 'a-z' 'A-Z' #将参数做大小写转换!
;;
"two")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
"three")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
*)
echo "Usage $0 {one|two|three}"
;;
esac

 

sh12-3.sh function带参数

function printit(){  echo -n "Your choice is $1" #加上 -n 可以不断行继续在同一行显示}echo "This program will print your selection !"case $1 in  "one")        printit 1;        ;;  "two")        printit 2;        ;;  "three")        printit 3;         ;;   *)        echo "Usage $0 {one|two|three}"        ;;esac

 

sh13.sh while do done循环

read -p "Please input yes/YES to stop this program:" ynwhile [ "$yn" != "yes" -a "$yn" != "YES" ]do  read -p "Please input yes/YES to stop this program:" yndoneecho "OK! you input the correct answer."

 

 sh13-2.sh  until  do  done循环

until [ "$yn" == "yes" -o "$yn" == "YES" ]do  read -p "Please input yes/YES to stop this program:" yndoneecho "OK! you input the correct answer."

 

sh14.sh

s=0i=0while [ "$i" != "100" ]do  i=$(($i+1))  #每次 i 都会增加1  s=$(($s+$i)) #每次都会累加一次!doneecho "The result of '1+2+3+...+100' is ==> $s"

 

sh15.sh  for...do...done循环

for animal in dog cat elephantdo  echo "There are ${animal}s..."done

 

sh16.sh 

users=$(cut -d ':' -f1 /etc/passwd) #获取账号名称for username in $users #开始循环进行do  id $username  finger $usernamedone

 

sh17.sh  (该shell script需要检查,还有问题)

network="192.168.66" #先定义一个域的前面部分for sitenu in $(seq 1 255)  #seq为sequence(连续)的缩写之意do  #下面的语句取得ping 的回传值是正确的还是失败的  ping -c 1 -w ${network}.${sitenu} &> /dev/null && result=0 || result=1  #开始显示结果是正确的启动(UP) 还是错误的没有连通(DOWN)  if [ "$result" == 0 ]; then     echo "Server ${network}.${sitenu} is UP."  else     echo "Server ${network}.${sitenu} is DOWN."  fidone

 

检查网段IP使用情况

#!/bin/bash#main---network=192.168.1ping_count=3IP=1:>IP_use:>IP_idle:>ping_actionecho "`date "+%Y%m%d %H:%M:%S"`----->脚本开始执行......"while [ $IP -lt 255 ]dohost=$network.$IPecho "-------->开始检测$host服务器通迅是否正常,ping次数$ping_count."ping $host -c $ping_count  >.ping_tmpsleep 1cat .ping_tmp  >>ping_actionecho "-------->服务器$host检测已完成."sum_ping=`tail -2 .ping_tmp |head -1 |awk -F, '{print$2}' |cut -c 2-2`loss_ping=`tail -2 .ping_tmp |head -1 |awk -F, '{print$4}'|cut -c 2-5`if [ $sum_ping -eq $ping_count ];then    echo "-->$host  IP 已经在使用中"    echo "-->$host  IP 已经在使用中"  >>IP_use  else    echo "$host IP 目前空闲:$loss_ping"    echo "$host IP 目前空闲"  >>IP_idlefiIP=$((IP+1))doneecho "`date "+%Y%m%d %H:%M:%S"`----->脚本运行完毕......"
View Code

 

sh18.sh  遍历目录下文件的权限

#1.先看看这个目录是否存在啊?read -p "Please input a directory:" dirif [ "$dir" == "" -o ! -d "$dir" ]; then   echo "The $dir is NOT exist in your system."   exit 1fi#2.开始测试文件。filelist=$(ls $dir) #列出所有在该目录下的文件名for filename in $filelistdo  perm=""  test -r "$dir/$filename" && perm="$perm readable"  test -w "$dir/$filename" && perm="$perm writable"  test -x "$dir/$filename" && perm="$perm executable"  echo "The file $dir/$filename's permission is $perm"done

 

sh19.sh for...do...done 循环

read -p "Please input a number,I will count for 1+2+...+your_input:" nus=0for((i=1;i<=$nu;i=i+1))do  s=$(($s+$i))doneecho "The result of '1+2+3+...+$nu' is ==> $s"

 

转载地址:http://hbiux.baihongyu.com/

你可能感兴趣的文章
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
BOM
查看>>
iOS: Block的循环引用
查看>>
css详解1
查看>>
MySQL类型转换
查看>>
HashSet HashMap 源码阅读笔记
查看>>
变量声明提升1
查看>>
DBS:同学录
查看>>
Mysql备份系列(1)--备份方案总结性梳理
查看>>
[CareerCup] 1.6 Rotate Image 翻转图像
查看>>
Python中的画图初体验
查看>>
Java程序员的日常 —— 响应式导航Demo
查看>>
objective-c内存管理基础
查看>>
sap关于价值串的说法(转载)
查看>>
Migration to S/4HANA
查看>>
sed 对目录进行操作
查看>>
什么是代码
查看>>