linux - 脚本将命令输出重定向到最后一个文件名参数

标签 linux bash shell

文件名:树(可执行)

#!/bin/bash
for i in $*
do
    if [ -d $i ]; then

        echo "===================$i================" >> ????? 
        tree -L 1 $i >> ?????
    fi
done

如你所见,我想列出我输入的参数的树结构,我想让所有的树结构重定向到最后一个文件(它的id是$#),它是“????? “在这个脚本中,因为我不知道怎么写。

例如:

./Tree ./* README

是的,所有目录树结构都会写在README中!

最佳答案

如果您的输出文件是第一个参数而不是最后一个,那么这样做会更容易/更简单。

那只需要

output=$1
shift

添加到脚本的顶部。

使用最后一个参数实际上并不难,它只是涉及更多“高级”变量用法:

#!/bin/bash
output="${@: -1}"

for i in "${@:0:${#@}}"
do
    if [ -d "$i" ]; then

        echo "===================$i================" >> "$output"
        tree -L 1 "$i" >> "$output"
    fi
done

其中 "${@: -1}" 是参数数组中的最后一个元素,"${@:0:${#@}}" 是从 0${#@} 的参数($@ 的长度,即脚本的参数计数)。

关于linux - 脚本将命令输出重定向到最后一个文件名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266176/

相关文章:

arrays - 在 shell 脚本中使用 awk 内的数组

xml - 在 Linux 上运行进程的 shell 脚本

python - 如果不重写 Python/Perl 脚本,我如何在 bash 脚本中通过管道将输出连接在一起?

c++ - Linux 可执行文件在同一文件夹中找不到共享库

c - 如何在 Linux 中使用 ioctl(原始分区)正确刷新磁盘缓存

c - 为什么 Linux USB 驱动程序通过网络传输异常值

linux - 如何为查找和 checkout 分支的 bash 命令编写别名

linux - 如何在 gvim 中正确设置 PATH?

linux - 当新文件到达供应商时,bash 文件 cron 作业出现问题

linux - 如何格式化 rsync -exclude-from 文件,使其排除文件/目录,但包含同一路径中的其他文件/目录