shell循环脚本
Ⅰ shell脚本如何实现把IP组里的ip逐个输出,并循环完成指定任务
#!/bin/bash
host=192.168.1.1,192.168.1.2,192.168.1.3
array=(`echo $host|tr ',' ' '`)
for ip in ${array[@]};do
scp XXX root@$ip:~
ssh root@$ip << ressh
执行命令
exit
ressh
done
Ⅱ Shell脚本for循环逐行原样输出
我在写Shell脚本时遇到了这样一个问题。
需求:从文件中逐行遍历然后输出。
诶?
为什么和我源文件的行数不一致呢?
后来查资料发现:
bash shell会将下列字符当作字段分隔符:空格、制表符、换行符
如果我们想忽略掉这些分隔符,需要设IFS的变量值。
在for循环前加上这个IFS赋值操作就可以了
看,现在输出的结果和我们txt文件中的格式是一样的了。
但是这样赋值会有问题,如果脚本中其他方法也用到了for循环,可能影响其他for循环的输出结果,那我们可以用这种方式给IFS赋值
Ⅲ Shell脚本中使用变量作为for循环范围
我们知道在shell脚本中,可以通过 {x..y} 这样的表达式来表示一个从x到y的数列
这个用法在shell脚本里叫做 Brace Expansion 。
因此我们常利用这个表达式来作为循环的次数,如:
可以得到从1到10的输出结果。
但是如果我们想输出从1到一个变量的结果,这个变量从其他地方获取:
得到的结果却是
放弃使用 {x..y} 这样的表达式:
seq 命令的原理就不说了,这里说说为什么不能在 { } 中使用变量。其实原因写在bash的man手册中:
Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces.
大意是说,Bash中会最先展开 { } 中的内容,这个时候 $NUM 还不会被具体的值替代,所以是 i 在循环中读取的是 ‘{1..$NUM}’ 的一个完整的字符串,输出时 $NUM 会被10替代,就有了 '{1..10}' 这样的结果。
关于Bash中的展开 (expansion) 顺序,其实有不少值得注意的地方,一不留神可能就会踩坑,还是老前辈那句:脚本猛于虎。
Ⅳ 用for循环编写删除文件的shell脚本
#!/bin/bash
#2.sh
cd
#进入加目录
touch
1
#创建文件1
read
-p
"请输入要删除的文件
1
:"
file
if
[
"$file"
!=
"1"
];then
echo
"请输入1
不许输入别的。谢谢!"
fi
for
i
in
$file
;do
#用for循环把$file代入$i
rm
-rf
$i
#删除$i
echo
"$i
被删除了。"
done
#结束
Ⅳ 什么是Shell脚本Shell脚本在Linux运维工作中的地位!
Shell脚本是实现Linux/Unix系统管理及自动化运维必备的重要工具,也是每一个运维工程师需要熟练掌握的知识,它可以帮我们提升工作效率,还可以减少不必要的重复性工作。但很多人对shell并不了解,分不清什么是shell,什么是shell脚本,接下来我们通过这篇文章为大家介绍一下。
什么是shell?
Shell指命令解释器。它的功能是解释执行用户输入的命令和程序,用户每输入一条命令,Shell就解释执行一条。这种从键盘上一输入命令就能立即得到响应的对话模式称为交互模式。
什么是Shell脚本?
当执行命令或程序语句是通过程序文件而不是命令行,那这个程序被称为Shell脚本。如果Shell脚本内置很多命令、语句及循环控制,然后一次性执行完毕,这种通过文件执行脚本的方式称为非交互方式。用户可以在Shell脚本中输入一系列命令及命令语句组合。这些命令、变量和流程控制语句等有机地结合在一起,就形成一个功能强大的Shell脚本。
Shell脚本在Linux运维工作中的地位
Shell脚本语言很适合用于处理纯文本类型的数据,而Linux系统中几乎所有的配置文件、日志文件(如NFS、Rsync、Httpd、Nginx、LVS、MySQL等),以及绝大多数的启动文件都是纯文本类型的文件。因此,学好shell脚本语言,就可以利用它在Linux系统中发挥巨大的作用。
Ⅵ Linux的shell脚本for循环怎么调用位置变量
1、利用$@, $#, $*参数或shift移位参数进行循环
2、例1
#!/bin/sh
while [ $# -gt 0 ]; do
echo $1
shift;
done
3、例2
#!/bin/sh
until (($#==0)); do
echo $1
shift;
done
4、例3
#!/bin/sh
for x in $*;do
echo $x
done
5、例4
#!/bin/sh
for x in $@;do
echo $x
done
Ⅶ 用shell写一个脚本按日期循环执行某一条命令怎么写
[ $? -eq 0 ] && echo '成功' || echo '失败'
[root@centos~]# ls
anaconda-ks.cfg install.log install.log.syslog rpmbuild
[root@centos~]# [ $? -eq 0 ] && echo '成功' || echo '失败'
成功
[root@centos~]# lsss
-bash: lsss: command not found
[root@centos~]# [ $? -eq 0 ] && echo '成功' || echo '失败'
失败
[root@centos~]#
Ⅷ shell脚本的常用循环
在简单介绍shell脚本(shell script)之前,先简单介绍一下shell。
在计算机科学中, shell (壳层)指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指操作系统中,提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的接口。因此与之相对的是程序内核(英语:Kernel),内核不提供和用户的交互功能。
不过这个词也拿来指应用软件,或是任何在特定组件外围的软件,例如浏览器或电子邮件软件是HTML排版引擎的shell。Shell这个词是来自于操作系统(内核)与用户界面的外层界面。
通常将shell分为两类:命令行与图形界面。命令行壳层提供一个命令行界面(CLI);而图形壳层提供一个图形用户界面(GUI)。
shell脚本 (英语:shell script),又称shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与解释型语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。
在Unix及所有的类Unix系统中,如Linux、FreeBSD等操作系统,都存在shell脚本。依照Unix shell的各种不同类型,shell脚本也有各种不同方言,如 Bourne shell (sh), Bourne-Again shell (bash), C shell (csh)等等。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell脚本有类似的功能。
常见的shell脚本循环语法包括for、while和until。除此之外,还有一些其他语法,能够实现循环(遍历)功能。和循环相关的还有循环控制符break和continue,用于控制流程转向。
for循环属于“当型循环”,即“当满足条件的时候执行”。
for循环有三种类型:
常见的数值for循环语法还有:
for file in $( ls )语法的等效语法有很多,如下:
或者
类C风格的for循环,和C没有太大的区别,这里只进行示例,不再赘述。
或者
结果:
也称为前测试循环语句,重复次数是利用一个条件来控制是否继续重复执行这个语句。为了避免死循环,必须保证循环体中包含循环出口条件即表达式存在退出状态为非0的情况。例如,计算1~100以内所有的奇数之和:
当然,条件可以使字符串,可以是输入值,可以是标记等,此处不再赘述。
until命令和while命令类似,while能实现的功能until也可以实现。但区别是until循环的退出状态是为0(与while刚好相反),即whie循环在条件为真时继续执行循环,而until则在条件为假时执行循环。
例如,计算1~100以内所有的奇数之和:
select结构从技术角度看不能算是循环结构,只是相似而已,它是bash的扩展结构用于交互式菜单显示,功能类似于case结构,但是比case的交互性要好。在遍历列表功能中,select结构可以实现循环的功能。
例如,以下选择,只有选择white的时候,退出循环
在循环语法中,经常需要根据条件控制循环退出或跳过本次执行,这时候就需要用到循环控制符。循环控制符主要包括两个:break和continue。
循环控制符和C以及Java等常见语法功能类似,在理不再赘述,只给出常用示例。
在for、while和until循环中break可强行退出循环。
注意 :break语句仅能退出当前的循环,如果是两层循环嵌套,则需要在外层循环中使用break。
例如,计算1~100以内所有的奇数之和:
在for、while和until中用于让脚本跳过其后面的语句,执行下一次循环。
例如,显示10以内能被3整除的正整数。
以上是自己在学习Linux的过程中的一部分总结,和大家共享。同时,也参考了其他人的博客,在参考列表中列出来了。