为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2019-02-26 21:07:26
在linux中 “# for i in `ls` ; do su -sh $i ; done ”命令是什么意思?
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-03-30
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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

查看完整回答
反对 回复 2019-03-30
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

这是一个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循环结束。

查看完整回答
反对 回复 2019-03-30
  • 3 回答
  • 0 关注
  • 923 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信