shell脚本实用初级入门

做为开发同学,实际工作中熟练使用大部分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分钟入门

发表评论

电子邮件地址不会被公开。 必填项已用*标注