【Shell篇】循环查找某个目录的脚本文件并打印运行

这篇具有很好参考价值的文章主要介绍了【Shell篇】循环查找某个目录的脚本文件并打印运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这段代码是/build/envsetup.sh文件最后一段代码,搜索了源代码中所有的vendorsetup.sh脚本。

for f in `test -d device && find -L device -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort` \
         `test -d vendor && find -L vendor -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort` \
         `test -d product && find -L product -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort`
do
    echo "including $f"
    . $f
done

这句代码是一个 shell 命令,大致意思是:如果当前目录中存在名为 device 的目录,则在该目录下递归查找深度不超过 4 级的所有文件中,名字为 vendorsetup.sh 的文件,并将find结果按照字母顺序排序。

具体语法解释如下:

  • test -d device:判断当前目录下是否存在一个名为 device 的目录。-d 表示测试对象是一个目录。
  • &&:如果上一条命令执行成功(即返回值为 0),则执行下面的命令;否则停止执行后续命令。
  • find -L device -maxdepth 4 -name 'vendorsetup.sh':在 device 目录下查找深度不超过 4 级的,名字为 vendorsetup.sh 的文件。各参数含义如下:
    • -L:表示遇到符号链接时,跟随它指向的文件/目录进行操作。
    • device:要查找的目录。
    • -maxdepth 4:查找的最大深度为 4 级子目录。
    • -name 'vendorsetup.sh':查找文件名为 vendorsetup.sh 的文件。
  • 2> /dev/null:将标准错误输出重定向到 /dev/null 中,如果 find 命令发生错误,它的错误信息会被丢弃掉,而不会影响整个管道的执行。
  • | sort:将查找到的结果按照字母顺序排序。| 表示将前面命令的输出作为后面命令的输入。

| 是将前面find命令的输出还是错误输出以此来作为后面命令的输入?

| 是一个管道符号,它表示将前面命令的标准输出(而不是错误输出)作为后面命令的标准输入。

所以!

在这个代码中,find 命令的标准输出(即查找到的文件路径)将被传递给 sort 命令作为标准输入,并进行排序操作。


那如果我想要把错误输出也给到管道怎么办呢?

在 shell 中,| 表示将前一个命令的标准输出 (stdout)作为后一个命令的标准输入(stdin),并将它们通过管道链接起来。

因此,在这段代码中,find 命令的标准输出(即文件路径)会被传递给下一个命令 sort 的标准输入。管道符号不会将错误输出(stderr)传递给下一个命令。

如果想要将错误输出也一起重定向到管道中,可以使用以下语法:

command1 2>&1 | command2

其中 2>&1 表示将标准错误输出(2)重定向到标准输出(1)中,然后再通过管道传递给下一个命令 command2


在循环中,依次打印路径名称,并source运行所有找到的vendorsetup.sh脚本。文章来源地址https://www.toymoban.com/news/detail-437067.html

到了这里,关于【Shell篇】循环查找某个目录的脚本文件并打印运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本实现删除服务器指定目录下文件方法

    上述脚本中,find 命令用于查找指定目录下4天以前的文件,并将其删除。其中,-type f 表示只查找普通文件,不包括目录和符号链接等其他类型的文件;-mtime +3 表示查找修改时间早于3天前的文件;-delete 表示删除查找到的文件。 脚本中的 $folder_path 可以替换为实际的目录路径

    2023年04月19日
    浏览(64)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(59)
  • android 运行shell 脚本文件或shell命令

    android 运行shell 脚本文件或shell命令 一.运行shell脚本文件 1.test.sh文件内容 #!/bin/bash echo \\\"I am a script\\\" ps 2.将shell文件拷贝到Android设备目录 3.执行脚本文件 Runtime.getRuntime().exec(\\\"sh /sdcard/lilei/test.sh\\\"); 注: 应用需要有存储访问权限,如果shell文件中有文件访问请用绝对路径,否则访问

    2024年03月12日
    浏览(63)
  • shell脚本-批量获取目录下所有文件的md5值、大小、inode值

    MD5的全称是Message-Digest Algorithm 5,它一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5值等同于文件的ID,它的值是唯一的。 如果文件已被修改,其MD5值将发生变化。 运行结果: 文件储存在硬盘上,硬盘的

    2024年02月09日
    浏览(44)
  • Linux 系统查看当前正在运行的某个进程的详细执行脚本和目录ls -l /proc/PID/cwd和 ls -l /proc/PID/exe

    首先使用 ps 命令查看当前正在运行的某个进程的 PID,例如: 这个命令会列出所有包含 your_process_name 信息的进程ID(也就是PID)和进程名称。你需要根据进程的名称来找到你想要查看的进程对应的PID。 然后进入 /proc 目录,你可以使用以下命令查看该 PID 对应的执行脚本: 其

    2024年02月11日
    浏览(50)
  • 【Shell编程练习】编写 shell 脚本,打印 9*9 乘法表

    输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量,小于给定值时报警 猜大小 输入三个数并进行升序排序 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 运行结果: seq 是一个用于生成数字序列的命令。它的基本语

    2024年01月17日
    浏览(51)
  • shell脚本的循环

    除了if…then…fi 这种条件判断式之外,循环可能是程序当中最重要的一环了。循环可以不断地执行某个程序段落,直到用户设置的条件完成为止。所以,重点是那个【条件的完成】是什么,除了这种依据判断式完成与否的不定循环之外,还有另外一种已经固定要跑多少次循环

    2024年02月03日
    浏览(38)
  • shell脚本之循环语句

    将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 一般知道循环次数使用for循环 不知道循环次数,知道停止条件时一般使用while break跳出单个循环后面加数字2则代表跳出两层循环 continue终止某次循环中的命令,但是不会完全终止命令

    2024年02月12日
    浏览(40)
  • Shell脚本学习指南-查找与替换篇

    编写 Shell脚本时经常用到的两个基本操作: 1.文本查找 (searching) — 寻找含有特定文本的行 2.文本替换(substitution) — 更换找到的文本 可以使用固定字符串完成很多工作,但是 正则表达式 能提供功能更加强大的标记法,以单个表达式匹配各种实际的文本段。 传统上 ,有三

    2023年04月09日
    浏览(34)
  • Shell脚本攻略:循环语句for

    目录 一、理论 1.for循环 2.echo命令 二、实验 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 6.实验六 7.实验七 8.实验八 9.实验九 (1)for循环的常见用法       ① 带列表的for循环 带列表的for循环用于执行一定次数的循环,其语法结构如下: for 变量名 in 取值列表 do   命令序列

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包