做为开发同学,实际工作中熟练使用大部分shell命令就能完成绝大多数事情,需要编写shell脚本的场景(机会)并不多。一般不会系统去学习shell脚本,这就导致偶尔要写一个shell脚本,往往觉得很费劲,比如自动登陆服务器、分发文件…
实际上系统介绍shell脚本的资料很少(包括书籍和网络),没有找到官网,网上各种教程也是众说纷纭,特整理一份让开发很快能熟悉的文档。
Shell是一种脚本编程语言,类似PHP、Python。可以简洁地表达复杂的操作(用很少的代码实现强大的功能)。
Shell变量以字母或下划线开头。变量赋值的方式为:先写变量名称,紧接着=字符,最后是值,等号前后不能包含空格。所赋的值包含空格的时候需要加上引号(单双均可)。取值的时候,需要在变量名称前面加上$字符。
ip="1.1.1.1" echo $ip
一、if判断语句实战,自动登陆服务器
通过命令行参数传递服务器IP,如果没有填,这登陆默认IP地址。
方式一:
#!/bin/bash if [ -n "$1" ]; then ip=$1 else ip="1.1.1.1" fi echo $ip ssh salmonl@"$ip" -i key.txt
-n string 表达式含义:如果字符串string不是null返回真。取反只需要在-n前加!
if [ ! -n "$ip" ];then # 如果$ip为空,则进来 fi
注意以上代码片段判断语句[ -n “$1” ]中$1需要加上双引号,不然当$1为null时,[ -n $1 ]等价与[ -n ],实在返回true。以下示例都输出success:
# 这语法也太松散了吧2333 if [ -n ];then echo "success" else echo "fail" fi # 输出 success
$ip="" if [ -n $ip ];then echo "success" else echo "fail" fi # 输出 success
方式二:
#!/bin/bash # 不使用-n的写法 if [ $1 ]; then ip=$1 else ip="1.1.1.1" fi echo $ip ssh salmonl@"$ip" -i key.txt
参考:
《Shell脚本学习指南》
《Shell脚本编程30分钟入门》