linuxcommand
❶ &&、()、||决定linux命令的执行顺序
一、&&
1.格式
command1 && command2
2.含义
&&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行。
二、||
1.格式
command1 || command2
2.含义
如果||左边的command1执行失败(返回1表示失败),就执行&&右边的command2。
三、()
如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用圆括号()把所有命令组合起来。
结合||和&&可以实现复杂的功能。Linux命令的执行顺序
1.格式
(command1;command2;command3;...)
❷ Linux里面ansible中command模块和shell模块区别是什么
command或shell模块,那么脚本中调用的是subprocess.Popen(args,kwargs)函数,command和shell的区别就在于command模块使用shell=True,而shell模块使用shell=False,就是一个调用了shell,一个没有。
官方文档中是不建议使用shell=True的,因为这可能导致shell injection安全问题,但是有些情况下用shell模块就很方便,比如我要批量删除一些文件,
ansible -i inventory all -m command -a "rm -f /etc/yum.repos.d/CentOS.repo" -U root -s -f 50 -kK
你如果执行以上命令的话,是不会删除掉那些文件的 ?
因为你的命令行中包含了通配符号,通配符必须要有在shell环境中才能被识别出,不然,它只能删除CentOS.repo这一个文件。 《linux就该这么学》
所以你需要执行以下命令才能成功
ansible -i inventory all -m shell -a "rm -f /etc/yum.repos.d/CentOS.repo" -U root -s -f 50 -kK
而这两个命令所生成的可执行脚本的区别就一行
< MODULE_ARGS = 'rm -f /etc/yum.repos.d/CentOS.repo'