“# for i in `ls` ; do su -sh $i ; done ”什么意思?

在linux中 “# for i in `ls` ; do su -sh $i ; done ”命令是什么意思?


红糖糍粑
浏览 933回答 3
3回答

慕尼黑5688855

首先 在命令前面有个 '#'的意思是本句话是注释,并不实际执行...再说你后面语句的意思,for ... in .... ; done是循环结构,ls是查看目录下的文件,su是以另一个身份($i),来运行一个shell,但问题是su 没有-sh选项,也就是说你这句话应该有问题才对.整体分析是遍历将当前目录下的文件,每个文件执行su -sh XXX(这里XXX是当前目录下的所有文件),功能尚不明确,还请楼主明示.

慕运维8079593

就是获取当前目录下的文件 并且以管理员身份依次运行脚本 就是目录下的脚本文件....可以理解为批量运行脚本 如果要生效 记得去掉注释符#

慕田峪7331174

这是一个for循环语句。首先声明一个变量i ,将/*即根目录下的所有文件的名称全部赋值给刚刚声明的变量i。这一段在编程中叫做循环头。接下来。do 和done之间的部分是循环体。echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。echo $i的作用是将根目录下所有文件显示出来。wc -l 的作用是显示文件的行数。find $i是查找根目录下所有文件。那么这个循环在实际运作时是这样的。首先声明变量i,将/*即根目录下的所有文件的名称全部赋值给刚刚声明的变量i。echo $i会将在根目录下的第一个文件名称显示出来,然后执行find $i | wc -l,这样会把根目录下第一个文件的行数显示出来。此时,第一次循环结束了。接着进行第2次循环,此时,echo $i会将在根目录下的第二个文件名称显示出来,然后执行find $i | wc -l,这样会把根目录下第二个文件的行数显示出来。就这样一次次的循环,直到把根目录下最后一个文件名称和它的行数显示出来。此时,既然已经是最后一个文件了,也就没有下一个了。所以循环的条件已经不能满足了。于是,就跳到done;的后面,for循环结束。
打开App,查看更多内容
随时随地看视频慕课网APP