一个脚本带你了解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基础的主要内容,如果未能解决你的问题,请参考以下文章