linux远程登陆的shell脚本for循环无结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux远程登陆的shell脚本for循环无结果相关的知识,希望对你有一定的参考价值。
一、原脚本
#!/bin/bash
aaa="u1 u2"
ssh -Tq root@192.168.78.104 << FF
echo "登陆后,aaa的值是: $aaa"
for i in $aaa;do
echo "for循环后,i的值是: $i"
done
exit
FF
echo 完成!
二、结果展示
# sh text.sh
登陆后,aaa的值是: u1 u2
for循环后,i的值是:
for循环后,i的值是:
完成!
三、问题:为嘛远程登陆后,执行for循环没结果???请各位大神解救下。。。
本地变量不起作用”这种说法
你的脚本之所以$aaa能回显,是因为在本地定义了这个变量,但本地没有定义$i这个变量,所以无法显示变量值,把aaa="u1 u2"一块塞<<ff.......ff这个内联重定向数据中去。再试试看。 参考技术A exit是在被调用的脚本里面,肯定会退出被调用的脚本了。如果不想继续执行while循环后面的程序可以在do后面的条件上加上break追问
不对啊,exit 是在for ;do...done 的外面啊,没在do.....done里面啊。。。
参考技术B ssh之后是远程主机执行的命令本地变量不起作用追问
1. 左边图中,ssh登陆后,我写了一个echo "登陆后,aaa的值是: $aaa"
右边结果中,却能够返回aaa的值、且正确;
所以,这个应该能,说明ssh后取原变量应该是ok的吧。
2. 你看右边结果中,for循环也正好显示了2次(我尝试过将aaa换成3个值,它也能出3次),故,这里说明,for循环 还是 已知道 aaa 是有几个值域的吧。。。
打印执行过程,你多echo 变量出来,看看具体哪里出错了
出问题了,要学会调试下脚本
Linux | shell脚本-条件判断if和循环语句for
一、简介上个章节中,我们学习了判断语句和运算语句。shell脚本中,这些判断语句一般都是和if、else、elif、for和while等语句一起使用。 在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令。
二、shell条件判断语句:if
1、流程控制:if单分支结构
语法:
if 条件判断;then
条件判断成功时执行的操作
...
fi
例子: 结合整数值比较-eq;检查主机是否在线
vim test1.sh
运行结果:
2、流程控制:if双分支结构
语法:
if 条件判断;then
条件判断成功时执行的操作
...
else
条件判断不成功时执行的操作
...
fi
例子:结合字符比较-z;检查某个服务是否运行,如果没运行则启动。
vim test2.sh
运行结果:
3、流程控制:if多分支结构
语法:
if 条件判断1;then
条件判断1成立时执行的操作
....
elif 条件判断2;then
条件判断2成立时执行的操作
....
else
所有条件判断都不成立时执行的操作
fi
例子:做一个奖品分类0-100分结合数值比较
0-59 安慰奖 60-70 三等奖 71-80 二等奖 81-90 一等奖91-100 特等奖
如果:不输入或大于100请重新输入分数
运行结果:
三、shell循环结构语句
shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for、while和until。while循环和for循环属于“当型循环”,而until属于“直到型循环”。循环控制符:break和continue控制流程转向。
1、循环结构:for
语法:
for 变量名 in 变量值列表
do
循环体
done
例子:输出1-254的中的偶数,并且计算个数
运算结果:
下期预告:shell脚本-循环语句while和until和分支结构case
睿江云计算官网链接:https://www.eflycloud.com/home?from=RJ_0024
以上是关于linux远程登陆的shell脚本for循环无结果的主要内容,如果未能解决你的问题,请参考以下文章
linux下如何使用shell脚本进行ssh远程登陆到其他机器执行停止进程的命令。 用户名/密码:test/12345h