Shell编程——命令、脚本执行方式、参数传递、函数、相互免密钥

Shell命令介绍

Shell是一种提供界面的应用程序,方便用户操作访问系统内核服务。
一般以 sh bash

vi hello.sh		//创建一个shell脚本名字为hello.sh  .sh的文件,添加的内容如下
	//告诉系统其后路径所指定程序————解释此脚本文件的Shell程序
	#! /bin/bash		//声明是bash文件
	name=zhangsan		//zhangsan值传递给name,声明变量
	echo $name			//打印$name;打印结果为zhangsan
	
	readonly name		//只读 name 变量
	unset name			//删除 name 变量
	
username=sun	//sun值传递给username,声明变量
//单引号('	'),任何字符都会原样输出,字符串中的变量是无效的
username1='hello,$username'		//声明变量
echo $username1					//打印$username1;打印结果为hello,$username
//双引号("	"),可以出现转义字符
username2="hello,$username"		//声明变量
echo $username1					//打印$username1;打印结果为hello,sun

email="123456@qq.com"			//声明变量
echo ${#email}					//打印$#email;打印结果为13

chmod u+x hello.sh		//给hello.sh文件 赋予 执行权限

Shell注释——以#开头的行,会被解析器忽略

Shell脚本执行 文件 三种方式

第一种 执行(.)+输入脚本绝对路径或相对路径(注:执行必须是一个可执行文件):

./hello.sh				//执行(.)hello.sh文件

第二种 执行(sh或bash)+脚本(注:当脚本没有执行[x]权限时,root和文件所有者都可执行):

sh hello.sh				//执行(sh)hello.sh文件

第三种 执行(source)+脚本(注:当脚本没有执行[x]权限时,root和文件所有者都可执行):

source hello.sh				//执行(source)hello.sh文件

区别:前两种会开一个新进程,后一种不会;注:在配置profile时,所有变量前要加 export——可以将当前进程变量传递给子进程去使用

Shell参数传递

执行Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个数字

参数处理参数说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有脚本传递的参数
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$?显示最后命令的退出状态。0表示没有错误,其他任何表明有错误。
$0执行的文件名

Shell函数

可以带function fun()定义,也可以直接fun()定义,不带任何参数。
参数返回,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255

虚拟机相互免密钥

多个窗口同时输入内容——在Xshell的工具→发送键输入到所有会话
每台要免密钥的机器都要输的命令,例如:下面是三台主机免密钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa	//三台主机分别生成密钥对(公钥和私钥),三台机器都要输入
vim /etc/ssh/ssh_config			//host验证,进入ssh_config文件添加数据,三台机器都要输入
	//脚本内容如下:(快捷键:G 快速到文本最后一行;o	跳到下一行)
	StrictHostHostKeyChecking no
	UserKnownHostsFile /dev/null

//将密钥分别拷贝给自己和别人
ssh-copy-id -i ~/ .ssh/id_rsa.pub root@node01		//主机名node01,三台机器都要输入
ssh-copy-id -i ~/ .ssh/id_rsa.pub root@node02		//主机名node02,三台机器都要输入
ssh-copy-id -i ~/ .ssh/id_rsa.pub root@node03		//主机名node03,三台机器都要输入

//检验——在node01机器上,输入下方命令
ssh root@node03		//成功 从node01进入 node03
ssh root@node02		//成功 从node03进入 node02
ssh root@node01		//成功 从node02进入 node01
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值