Linux的shell编程:题目要求写一个脚本能够基本达到ls -R这个命令的效果。
下面这两个脚本中,第一个运行正确,第二个错误。错误的显示与ls-R命令的差别分别是第三张和第四张图片。我的问题是:1、shell中的函数递归是不是不断打开子shell?比...
下面这两个脚本中,第一个运行正确,第二个错误。错误的显示与ls -R命令的差别分别是第三张和第四张图片。我的问题是:
1、shell中的函数递归是不是不断打开子shell?比如第一张图的第13行,$1会受到上一行的调用而改变吗?
2、第二个脚本的错误原因是什么?感觉整个脚本根本没进入循环啊!
新人刚学linux,诚心求大神告知! 展开
1、shell中的函数递归是不是不断打开子shell?比如第一张图的第13行,$1会受到上一行的调用而改变吗?
2、第二个脚本的错误原因是什么?感觉整个脚本根本没进入循环啊!
新人刚学linux,诚心求大神告知! 展开
展开全部
解答:
1,会受到改变,如果那行改成ls -l可以达到同样的目标,而且更易读一些。但是如果用List 就会调用一次List本身,就会改变目录位置,因此最后加一个CD $1回到主目录。
2,第二个List中的唯一区别是没有cd $1.就是说LS $1只能显示目录,但是不在目录下面。你怎么判断 -d,因此循环只在脚本目录里执行一次。又对应不了LS中的文件,所以看上去没有执行。
1,会受到改变,如果那行改成ls -l可以达到同样的目标,而且更易读一些。但是如果用List 就会调用一次List本身,就会改变目录位置,因此最后加一个CD $1回到主目录。
2,第二个List中的唯一区别是没有cd $1.就是说LS $1只能显示目录,但是不在目录下面。你怎么判断 -d,因此循环只在脚本目录里执行一次。又对应不了LS中的文件,所以看上去没有执行。
更多追问追答
追问
哇哦,原来不进入目录就不能判断的啊......get......
第一个还有疑问唉,既然$1在改变,那怎么会回到主目录......恕我愚昧,求教。
追答
$1在当前shell没变,变的是list函数子目录,就是进入了$1/$i
所以说用Ls 取代 list是合适的。
不进目录可以判断。应该是这样。 [ -d $1/$i ]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询