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循环没结果???请各位大神解救下。。。

我比较认同“ssh之后是远程主机执行的命令
本地变量不起作用”这种说法
你的脚本之所以$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 是有几个值域的吧。。。

参考技术C sh -x yourshell
打印执行过程,你多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循环无结果的主要内容,如果未能解决你的问题,请参考以下文章

shell基础(五)for循环及循环终止命令

linux脚本里,ssh 里可以嵌套for循环?怎么弄啊

linux shell脚本中for循环的语法

linux下如何使用shell脚本进行ssh远程登陆到其他机器执行停止进程的命令。 用户名/密码:test/12345h

怎么在一个shell脚本中执行远程主机的另一个shell脚本?? ssh已经可以无密码登录了。

Linux系统shell脚本for循环实战之目录权限