shell脚本中不能使用ls命令来读取目录下的文件信息吗

shell脚本中不能使用ls命令来读取目录下的文件信息吗,第1张

不能

脚本中使用ls命令,在一般情况下没什么,可以正常输出文件名;但是但文件名含有空格时,ls命令却无法正确识别空格是文件名称中的分隔符还是分隔不同的文件名,它只会按照单词为单位进行拆分。

其次,如果文件名中含有号,根据通配符原则,会当作识别当前目录下所有文件。

脚本中执行其他目录的脚本或者命令,可以用&&连接两条命令,当前面命令执行正常时,才执行后面命令

比如:

cd

/root/replace/scripts

&&

/runout

cd

/root/replace/scripts

&&

/bsh

记得权限

1)看下面的脚本a1sh,假设要显示目录/home/user/tmp/下面的所有的文件和(子)目录的名字:

$ cat a1sh

#!/bin/bash

for file in /home/user/tmp/

do

echo $file

done

2)假设目录/home/user/tmp/下面的所有的文件和(子)目录如下:

$ ls

1txt 2txt a1sh ash bsh email_back m1doc tmp

3)运行脚本:

$ a1sh (或者/a1sh)

/home/user/tmp/1txt

/home/user/tmp/2txt

/home/user/tmp/a1sh

/home/user/tmp/ash

/home/user/tmp/bsh

/home/user/tmp/email_back

/home/user/tmp/m1doc

/home/user/tmp/tmp

4)脚本a1sh的作用只是显示文件和子目录的列表,要显示文件的内容,脚本继续改造,内容如下,看脚本a2sh:

$ cat a2sh

#!/bin/bash

for file in /home/shiqingd/tmp/

do

echo $file

if [ -f $file ]; then

cat $file

fi

done

脚本a2sh可以达到目的。

执行如下三条命令即可:

(1)、$script myresultfile

(2)、$ls -al txt

(3)、$exit

此时,该目录下的所有 txt 文件名称就会以长格式保存在 myresultfile 文件中了。

然后你再使用 SHELL 编程的功能把那些无用的列去掉即可。

以上就是关于shell脚本中不能使用ls命令来读取目录下的文件信息吗全部的内容,包括:shell脚本中不能使用ls命令来读取目录下的文件信息吗、shell脚本 如何切换当前目录、如何用shell编程打印出目录下的所有文件内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9535928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存