您好、欢迎来到现金彩票网!
当前位置:ds视讯 > 非托管代码 >

Linux的shell编程:题目要求写一个脚本能够基本达到ls -R这个命

发布时间:2019-07-01 16:42 来源:未知 编辑:admin

  Linux的shell编程:题目要求写一个脚本能够基本达到ls -R这个命令的效果。

  Linux的shell编程:题目要求写一个脚本能够基本达到ls -R这个命令的效果。

  下面这两个脚本中,第一个运行正确,第二个错误。错误的显示与ls-R命令的差别分别是第三张和第四张图片。我的问题是:1、shell中的函数递归是不是不断打开子shell?比如第一张图的第13...

  下面这两个脚本中,第一个运行正确,第二个错误。错误的显示与ls -R命令的差别分别是第三张和第四张图片。我的问题是:

  1、shell中的函数递归是不是不断打开子shell?比如第一张图的第13行,$1会受到上一行的调用而改变吗?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  1,会受到改变,如果那行改成ls -l可以达到同样的目标,而且更易读一些。但是如果用List 就会调用一次List本身,就会改变目录位置,因此最后加一个CD $1回到主目录。

  2,第二个List中的唯一区别是没有cd $1.就是说LS $1只能显示目录,但是不在目录下面。你怎么判断 -d,因此循环只在脚本目录里执行一次。又对应不了LS中的文件,所以看上去没有执行。更多追问追答追问哇哦,原来不进入目录就不能判断的啊......get......

  第一个还有疑问唉,既然$1在改变,那怎么会回到主目录......恕我愚昧,求教。追答$1在当前shell没变,变的是list函数子目录,就是进入了$1$i

  不进目录可以判断。应该是这样。 [ -d $1$i ]追问棒!第二个完全懂了,看来必须要列出完整路径。

  在正确的那个脚本中,我们假设程序刚开始第一次循环,运行到了第12行,也就是开始调用函数自己。此时,打开一个子shell,$dir成为子shell中的$1。而这个新的$1不能改变原来shell中的$1.

  也就是说当子shell结束的时候,第13行中的$1依旧是我在运行时输入的那个文件夹。

http://green-core.net/feituoguandaima/533.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有