PHP执行shell脚本或者Bash脚本文件实例。system和exec函数可能被配置文件禁用,可以通过修改php配置文件删除被禁用的函数。1.通过system函数执行使用实例:运行结果:2.批量执行Shell命令为了方便管理,可以将所需执行的命令写入至sh文件,然后通过system执行即可。sh文件以#!.../bin/bash开头,指示命令解释器,需要执行的命令每行一个,以;结尾,内容结尾可不带换行,否则status获取的是换行执行的结果(即空),if判断为空值则会输出命令执行失败,但实际上结尾换行符以上的命令是实际执行成功的...改为以上sh文件的相对或绝对路径如下:bash dig.sh";echo "";system($shell, $status);echo "";//注意shell命令的执行结果和执行返回的状态值的对应关系
1、标准输出重定向 (>) 示例:# 将ls命令的输出写入到file.txt文件中ls > file.txt2、追加输出重定向 (>>) 示例:# 将echo的输出追加到file.txt文件的末尾echo...>> file.txt3、标准输入重定向 (txt文件中读取内容,并使用sort命令排序sort txt4、管道 (|) 示例:# 使用ls命令列出当前目录的文件...2> error.log6、同时重定向标准输出和标准错误 (&> 或 2>&1) 示例:# 将命令的输出和错误信息都写入到output.log文件中some_command &> output.logShell...(点号)操作符来包含其他Shell脚本文件。文件包含的示例脚本1.sh:#!/bin/bash# 这是脚本1.sh的内容echo "这是脚本1.sh"脚本2.sh:#!...确保包含的脚本文件具有可执行权限,以便Shell可以执行它们。
二、本文前言 本文是该专题的第四篇。 循环是编程的一部分,shell脚本的编写离不开循环。文章主要介绍了通过两层for循环查找可执行文件和使用while循环创建用户这两个示例。.../bin/bash':脚本首行,声明执行脚本的shell 'IFS=:':自定义分隔符为: 'for folder in PATH':开启外层循环,使用for命令循环读取变量\PATH并赋值给folder...'for file in folder/*':内层循环,将\folder/路径下循环找到的文件赋值给file 'if [ -x $file ]':判断file是否为可执行文件,是则通过echo输出 '...users.txt为用户列表,包含用户名,用户备注和用户登录的shell环境; users.txt为变量input的值作为 while 命令的重定向数据,即通过read命令读取users.txt并通过自定义...四、本文总结 本文通过两个循环示例:查找可执行文件和批量新增用户,介绍了for循环和while循环的基本使用。同时也对read、IFS、冲入重定向做了说明。
/bin/bash #shell脚本 保存路径的文本 #./deleteFile.sh ...." #逐行读取文件内容并删除对应路径的文件 success=0 for i in `cat $filename` do #成功信息重定向输出到info.txt...#----------------------------Test---------------------------------- #for循环读取文件内容并保存到picture数组 n=1 for...循环读取文件内容并保存到delete数组 i=1 while read line do delete[$i]="$line" i=`expr $i 1` done 文件路径的文本是在windows下创建的,在linux下新建picture.txt文件,执行./deleteFile.sh ./picture.txt命令后,成功删除。
10个系统账户 示例2: 批量创建用户 用户名存放在users.txt的文件,每行一个 初始密码123456 验证脚本 示例:99乘法表 示例: 根据IP地址检查主机状态 IP地址存放在ipadds.txt...文件中 使用ping命令检测各主机的连通性 1.1、for循环读取文件 for i in `cat 文件名` 1.2、示例:生成随机密码 脚本自动生成一个8位随机密码,大小英文字母和数字 字符串长度...循环 语法: while 条件测试 do 命令序列 done 2.1、while循环读取文件 法一 #line 为变量名 while read line #读取每行文件 do echo $line...#输出每行 done 文件名 #文件名交给while 法二 cat 文件名 | while read line #读取每行文件 do echo $line...并且可以返回指定状态码 exit执行后,脚本后面所有语句都不会执行 5.2、break 跳出当前的循环体,去执行循环后面的语句 break跳出单层循环,break 2跳出2层循环
方法一、使用输入重定向 逐行读取文件的最简单方法是在while循环中使用输入重定向。...- 开始while循环,并在变量“rows”中保存每一行的内容 - 使用echo显示输出内容,$rows变量为文本文件中的每行内容 - 使用echo显示输出内容,输出内容包括自定义的字符串和变量,$rows...: - 使用管道将cat命令的输出作为输入发送到while循环。...|while read rows;do echo "Line contents are : $rows";done 方法三、使用传入的文件名作为参数 第三种方法将通过添加$1参数,执行脚本时,在脚本后面追加文本文件名称.../bin/bash cat mycontent.txt |awk '{print "Line contents are: "$0}' 运行结果: 总结 本文介绍了如何使用shell脚本逐行读取文件内容
while 是Shell脚本中用于创建循环的另一个关键字,它不同于 for 循环,while 循环会根据条件的真假重复执行一段代码块,直到条件不再满足为止。.../bin/bash # 使用 while 循环输出 1 到 5 的数字 counter=1 while [ $counter -le 5 ] do echo "Counter: $counter...只要条件成立,即 counter 小于等于 5,就会输出当前计数器的值并将计数器递增,当counter大于5的时候则会退出循环。 从文件中读取内容: #!.../bin/bash # 从文件中逐行读取内容并输出 file="example.txt" while IFS= read -r line do echo "Line: $line" done...< "$file" 在这个例子中,while IFS= read -r line 从文件 example.txt 中逐行读取内容,并将每行内容赋给变量 line,然后输出每行的内容。
/bin/bash # 循环 # Shell 的循环主要有 for、while、until、select 几种 # for 循环 # 带列表的 for 循环: # for VAR in (list)...echo $COUNT let "COUNT++" done # while 按行读取文件 echo "john 30 boy sue 20 girl" > tmp.txt while...# >& 标识输出重定向,讲一个标识的输出重定向到另一个标识的输入 # 文件中读取输入,而不是从键盘中读取输入 # | 管道,从一个命令中读取输出,作为另一个命令的输入...文件标识符 # exec 3>file 将写入文件标识符的内容写入到指定文件(输出重定向) # exec 4文件标识符4,4是3的拷贝 (类似标识输出重定向 2>&1) # 注:.../bin/bash # 字符处理 # 管道 # 从一个命令中读取输出,作为另一个命令的输入 # 示例 # ls | grep .sh | cut -f1 -d'.
$i++) { $sum+=1; } //父进程写入 file_put_contents($file,$sum); //以上代码是子进程 读取文件内容 并累加1000次,写入文件,父进程读取文件内容...,并累加1000次 写入文件, 正常来说,最终得到的值是2000 以上结果可以理解为多进程读文件、写文件操作,正常我们使用命令执行是基本看不出什么问题的,接下来我们写一个简单的shell脚本 #!.../bin/bash int=1 while(($int<=500)) do php demo24.php cat demo24.txt echo -e "-->\c" let "int++"...done 给以上编写的shell脚本可执行权限。.../test.sh 完成 如果不了解的可以查看上面的文章 如何编写一个PHP解释器文件 执行shell脚本 .
执行ssh只循环一次{ cat - # 让cat读连接文件stdin的信息 seq 10 | while read line; do ssh localhost "...{ for (( i = 1;i<=${thred};i++ )) do echo; # 因为read命令一次读取一行,一个echo默认输出一个换行符...,所以为每个线程输出一个占位换行 done } >&4 # 将占位信息写入管道 for id in ${seq} # 从任务列表 seq 中按次序获取每一个任务.../ur_command ${id};echo >&4 ) & # 在后台执行任务ur_command 并将任务 ${id} 赋给当前任务;任务执行完后在fd4种写入一个占位符 done...Thread;i++));do echo;done >&6 #此后标准输入将来自fd5 exec 5<$CurFileName #开始循环读取文件列表中的行
md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum...a.txt'`do #以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果 if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$f..." /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果...#场景: #1.访问日志文件的路径:/data/log/access.log #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm...d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中
md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find..._b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果 if [ $md5_a !.../bin/bash ################################################################ #有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况...#场景: #1.访问日志文件的路径:/data/log/access.log #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm...,可将输出结果写入临时文件中,再替换2.txt或者使用-i选项 10、统计当前目录中以.html结尾的文件总大 方法1: # find .
语句替代 如果需要执行确定次数的循环,应该用for语句替代while语句 输入的参数要有正确性判断 多加注释,方便自己或他人阅读。.../bin/bash for i in $(cat /root/users.txt) --》从列表文件读取文件名 do useradd $i echo "123456" |...break语句:(跳出循环) 在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体后的语句 continue语句:(跳出本次循环) 在for、while、until等循环语句中.../bin/bash for i in $(cat /root/users.txt) --》从列表文件读取文件名 do useradd $i echo “123456”| passwd...:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错 $RANDOM :随机数,可以作为临时文件名 例:输出0-9以内的随机数–》echo ((RANDOM%10))
它是一种命令语言,提供了一种通过键入文本命令来执行操作的方式。Shell还可以解释和执行脚本文件,这些脚本文件包含了一系列按顺序执行的命令。...另外,Shell还支持将命令的输入或输出重定向到文件或其他设备,例如使用">"将输出重定向到文件,"文件中读取输入。...循环结构的语法为: # for循环示例 for 变量 in 列表; do # 执行循环体中的命令或代码块 done # while循环示例 while [ 条件 ]; do # 执行循环体中的命令或代码块...它通过读取文本流并根据指定的规则进行处理,然后将结果输出到标准输出或文件中。sed在Linux和Unix系统中广泛使用,具有强大的文本处理能力。...sed -n '/start/,/end/p' file.txt 脚本文件操作:从文件中读取sed命令。
e表示找出操作历史之中,最近的那一条以e开头的命令并执行。Bash 会先输出那一条命令echo Goodbye,然后直接执行。 同理,!echo也会执行最近一条以echo开头的命令。 $ !...,即2变成1、3变成2、4变成 while循环结合shift命令,也可以读取每一个参数。...." ;;& esac 循环 while循环 while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。...until 循环 until循环与while循环恰好相反,只要不符合判断条件(判断条件失败),就不断循环执行指定的语句。一旦符合判断条件,就退出循环。...脚本在头部加上它,遇到不存在的变量就会报错,并停止执行。 #!
shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行事。...md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum...a.txt'`do #以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果 if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$f...#场景: #1.访问日志文件的路径:/data/log/access.log #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm...d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中
文件描述符是与文件输入、输出相关联的整数。...它们用来跟踪已打开的文件。最常见的文件描述符是stdin(标准输入)、stdout(标准输出)和stderr(标准错误)。.../bin/bash #filename:sleep.sh echo -n Count: (echo -n不换行输出) tput sc count=0; while true; do if [ $...tput ed清除从当前光标位置到行尾之间的所有内容,使得旧的count值可以被清除并写入新值。循环内的1秒钟延迟是通过sleep命令来实现。...true;do $@ && return;done} 2.工作原理 我们创建了函数repeat,它包含了一个无限while循环,该循环执行以参数形式(通过$@访问)传入函数的命令。
文章来自:博智互联 编辑 杰哥的IT之旅 shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。...md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum...a.txt'` do #以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果 if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$...f" /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果...d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中
非交互模式 简单来说,你可以将 shell 的非交互模式理解为执行 shell 脚本。 在非交互模式下,shell 从文件或者管道中读取命令并执行。...循环语句 循环其实不足为奇。跟其它程序设计语言一样,bash中的循环也是只要控制条件为真就一直迭代执行的代码块。 Bash中有四种循环:for,while,until和select。...举个例子,如果我们想把所有的.bash文件移动到script文件夹中,并给它们可执行权限,我们的脚本可以这样写: #!...FILE}" done while循环 while循环检测一个条件,只要这个条件为 真,就执行一段命令。...,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。
领取专属 10元无门槛券
手把手带您无忧上云