一个脚本带你了解shell基础

Posted yes5144

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个脚本带你了解shell基础相关的知识,希望对你有一定的参考价值。

比如工作中需要对一批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基础的主要内容,如果未能解决你的问题,请参考以下文章

带你了解Linux基础命令(适合想学习Linux的小伙伴)

shell脚本编程基础

linux[基础]-15-简单的shell脚本[01]

Shell记录-Shell脚本基础

Linux shell入门基础

shell基础