码迷,mamicode.com
首页 > 系统相关 > 详细

一个脚本带你了解shell基础

时间:2017-11-15 21:44:35      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:多点   http   显示   ctr   image   col   ==   搜索   ps1   

比如工作中需要对一批ip进行测试是否仍被封杀了,就需要简单的写个脚本ping测试。

就需要两台机器,

虚拟主机:centos6.7 系统

本地linux:centos6.5


【虚拟主机】

远程到主机,添加ip(学了脚本,容我显摆一下)

可以用XSHELL,如下操作

技术分享

 

技术分享

 当然如果你用Windows 文本文件保存的,可能会添加失败,原因是:Windows和linux的换行符是不一样的

技术分享

 

而在linux 中编辑的没有 "^M" 

你可以用:sed 命令处理一下如:

sed ‘s/^M//g‘ troubles.txt >testip.txt  #linux中^M的输入方法:Ctrl + v +M

如果不放心可以执行:cat -A testip.txt   # 哈哈,没有^M了

执行添加ip的小脚本:sh addip.sh  # 偶尔用用,没有必要给添加 “执行权限”

ip addr   # 查看ip


 

【本地linux】

同样上传trouble.txt,同样退^M 进行处理

也可以远程复制过来:

scp testip.txt root@192.168.0.106   # 呵呵,内网ip,外网无法访问,忘记它吧!!!

ping 脚本:

技术分享

sh ipping.sh


 

shell 编程

shell 通过提示你输入,向操作系统解释该输入。

在此用 /bin/bash
echo $SHELL

格式如下
#!/bin/bash #固定格式,在每个脚本第一行

系统变量

env  #命令行输入 查看

环境变量

$HOME 当前用户的登录子目录
$PATH 以冒号分隔的用来搜索的子目录清单
$PS1 命令行提示符,通常是“$”字符
$PS2 辅助提示符,用来提示后续输入,通常是“>”字符
$IFS 输入区的分隔符。当shell读取输入数据的时候会把一组字符看作是单词之间的分隔字符,他们通常是空格、制表符和换行符
$0 shell脚本程序的名字
$#  是传给脚本的参数个数,$#是一个数字

$*   显示所有向脚本传递的参数,$*是一个字符串

$?  是显示最后命令的退出状态,0表示没有错误,其他表示有错误
$$ 该shell脚本程序的进程ID,脚本程序一般会使用它来创建独一无二的临时文件,比如/tmp/tmpfile_$$

$1 第一个变量。相应的$2为第二个变量,依次类推。
$UID 当前用户的 ID
$PWD

自定义变量(字母或下划线开头的一类字符组合,最好见名知意

除了系统变量,其他都可以使用,
========================
shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:

-e :判断文件或目录是否存在

-d :判断是不是目录,并是否存在

-f :判断是否是普通文件,并存在

-r :判断文档是否有读权限

-w :判断是否有写权限

-x :判断是否可执行

 

使用if判断时,具体格式为:
if [ -e filename ] ; then
echo "filename 存在"
else
echo "没有此文件"

fi
========================

先这么多吧,实战中提炼后再补充,也请多指教,多点赞,谢谢

一个脚本带你了解shell基础

标签:多点   http   显示   ctr   image   col   ==   搜索   ps1   

原文地址:http://www.cnblogs.com/yes5144/p/7818124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!