Linux命令行与Shell脚本编程大全-构建基本脚本

本章内容:

构建基本脚本

使用多个命令

创建shell脚本文件

构建基本脚本

在构建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:

#!/bin/bash
模拟linux登陆shell
#!/bin/bash
#
echo -n "Login:"
read name
echo -n "Password:"
read -s password

if [ $name='abc' -a $password='abc' ];then
  echo -n "Login in Success!"
else
  echo -n "Input Error"
fi

比较两个数大小
#!/bin/bash
#
echo "please enter two number"
read x
read y
if test $x -eq $y
then 
  echo "No.1 == No.2"
elif test $x -gt $y
then
  echo "No.1 > No.2"
else
  echo "No.1 < No.2"
fi
查找/var/目录下是否存在该文件
#!/bin/bash
#
echo "Enter a file name you want to search:"
read f
if test -e /var/$f
then 
  echo "the file is exist!"
else
  echo "Sorry the file is not exist!"
fi
for循环的使用
#!/bin/bash
#
for i in `seq 1 10`
do 
 echo $i
done
命令行输入
#!/bin/bash
echo "Please enter a user"
read x
y=$(whoami)
if test $x = $y
then
echo "The user is running"
else
echo "The user is not running"
fi
删除当前目录下大小为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 -f $filename
   fi
 fi
done
如果/export/um_lpp_source下有文件,那么将其文件系统大小改为4G
#!/bin/bash
#
while line=`ls /export/um_lpp_source`
do
  if test $line=""
  then
    echo "NULL"
    sleep 1
  else
  echo "$line"
  chfs -a size=4G /export/um_lpp_source
  exit 0
  fi
done
测试IP地址是否ping得通
#!/bin/bash
for i in `seq 1 10`
do
  echo "the number of $i computer is:"
  ping -c 1 192.168.2.$i
done
查看test.log的大小大于0,那么将/opt/目录下的*.tar.gz文件复制到当前目录
#!/bin/bash
#
a=2
while name="test.log"
do
  sleep 1
  b=$(ls -l $name| awk '{print$5}')
  if test $b -ge $a
  then
    cp /opt/*.tar.gz .
    exit 0
  fi
done
从0.sh中读取内容并打印
#!/bin/bash
#
while read line
do
  echo $line
done < 0.sh

#利用管道符可以更加直观
cat 0.sh | while read line
do
  echo "$line"
done
读取a.c中的内容并做加1运算
#!/bin/bash
#
test -e a.c
while read line
do
  a=$(($line+1))
done < a.c
echo $a
普通无参数的函数
#!/bin/bash
#
p()
{
  echo "hello world"
}
p
给函数传递函数
#!/bin/bash
#
p_num() 
{
  num=$1
  echo $num
}

for n in $@
do
  p_num $n
done
创建新的文件夹
#!/bin/bash
#
while true:
do
  echo "please input file's name:"
  read a
  if test -e /root/$a
  then
    echo "the file is exist please input a new file name"
  else
    mkdir -p $a
    echo "create directory successfully!"
    break
  fi
done
获取本机ip地址
#!/bin/bash
#
ifconfig | grep "inet addr." | awk '{print $2}' | sed 's/addr://g'

#172.16.110.161
#127.0.0.1
#192.168.122.1
查找某个目录下最大的文件
#!/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"
查找当前网段内IP用户,重定向到ip.txt文件中
#!/bin/bash
#
a=1
while:
do
  a=$(($a+1))
  if test $a -gt 255
  then
    break
  else
    echo $(ping -c 192.168.0.$a | grep "ttl" | awk '{print $4}' | sed 's/://g')
    ip=$(ping -c 192.168.0.$a | grep  "ttl" | awk '{print $4}' | sed 's/://g')
    echo $ip > ip.txt
  fi
done
打印当前用户
#!/bin/bash
#
echo "Current login user is :"
echo $(whoami)
echo "Current TTY is:"
echo $(ps | grep "$$" | awk '{print$2}')
case语句练习
#/bin/bash
#
clear
echo "enter a number from 1-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 "out of range,errror"
  ;;
esac
yes/no 返回不同的结构
#!/bin/bash
#
clear
echo "Enter [y|n]:"
read a
case $a in 
  yes|y|Y|YES) echo "You enter $a"
  ;;
  no|NO|N|n) echo "You enter $a"
  ;;
  *) echo "Error input "
  ;;
esac

杀进程
#!/bin/bash
#
pid=$(ps -ef | grep "进程相关内容" | grep -v grep | awk '{print$2}')
if [ -n "$pid" ]
then
  kill -9 $pid
fi
内置命令的使用
#!/bin/bash
#
clear
#利用环境变量
echo "Hello $USER"
echo "Today's date is `date +%F`"
echo "the user is : $(whoami)"
echo "the os is `uname -s`"
打印无密码用户
#!/bin/bash
#
echo "No Pssword Users are:"
#这边!!需要用转义符进行转义
echo $(cat /etc/shadow | grep "\!\!" | awk 'BEGIN {FS=":"}{print $1}')
检查端口号是否已启动
#!/bin/bash
#
n=1
echo "检查xxx服务..."
while true:
do
  if test $n -gt 20
  then
    echo "xxx服务启动失败"
    break
  fi
  sleep 5
  n=$(($n+1))
  port=`netstat -antp| grep "0.0.0.0:8080"`
  if [ ${#port} -gt 3 ]
  then 
    echo "xxx服务已经启动"
    break
  fi
done

以上内容是只是作为一个练习 如有涉及内容侵权 请及时告知 特别感谢马哥Linux运维的公众号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,127评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,093评论 9 467
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,714评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 静静的, 微微一笑, 无法移开我的视线, 像自然的恩赐, 是秋天饱满的果实。 无言传递,心中幸福溢出。 不,此刻请...
    闲时翻书君阅读 197评论 0 2