Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从bash中的另一个命令发送函数结果?_Linux_Bash_Ubuntu - Fatal编程技术网

Linux 如何从bash中的另一个命令发送函数结果?

Linux 如何从bash中的另一个命令发送函数结果?,linux,bash,ubuntu,Linux,Bash,Ubuntu,我想写一个bash脚本,叫做unpack,​​ 它可以解压多个打包文件。它甚至可以递归地遍历文件夹,并将其中的所有归档文件解包,而不考虑打包时使用的特定算法 具体内容如下: unpack [-r] [-v] file [file...] 给定一个文件名列表作为输入,该脚本查询每个目标文件(解析文件的输出)​​ 命令)以获取在其上使用的压缩类型。然后,脚本自动调用相应的解压缩命令,将文件放在同一文件夹中 如果已存在同名文件,则会覆盖这些文件。 现在-我的代码是: command=${1?Err

我想写一个bash脚本,叫做unpack,​​ 它可以解压多个打包文件。它甚至可以递归地遍历文件夹,并将其中的所有归档文件解包,而不考虑打包时使用的特定算法

具体内容如下:

unpack [-r] [-v] file [file...] 
给定一个文件名列表作为输入,该脚本查询每个目标文件(解析文件的输出)​​ 命令)以获取在其上使用的压缩类型。然后,脚本自动调用相应的解压缩命令,将文件放在同一文件夹中

如果已存在同名文件,则会覆盖这些文件。 现在-我的代码是:

command=${1?Error: no command given}
arr="($@)"
for ((i=0; i<=3; i++))
do
    --here I want to send to $command $arr[i]
    echo "$i: ${arr[i]}"
done

现在,这段代码正在为其类型的每个参数打印。但我想对每一个都减压。如何处理xargs结果?

有两种方法可以将命令的输出用作下一个命令的输入:

  • 烟斗
示例:筛选文本文件并对结果进行排序:

    grep "something" filename.txt | sort
说明:首先文件被过滤,并且
grep
希望在屏幕上显示结果。但是,这些行被用作
sort
命令的输入,该命令对结果进行排序并显示结果

这种工作方式主要用于单个命令行

  • 将一个命令/函数的输出作为另一个命令/函数的输入传递
这可以通过使用
$(…)
或倒勾来完成:

    chmod 777 $(pwd)
    chmod 777 `pwd`

这种工作方式更多地在脚本中使用。

arr=“($@)”
不会做您认为它会做的事情
arr
不是数组,它是一个普通变量。那
解包[-r][-v]文件[文件…]
是什么?如果是这样,它可以用
-p
将数据输出到标准输出,然后您可以重定向它。您能否澄清要求-需要支持哪种类型的“打包文件”?您是在谈论tgz、zip、bz2等等@dash-o解包应支持4个解包选项-​解压缩​​, ​bunzip2​​, ​解压​​, ​解压​​. 添加更多选项应该非常简单..bz2.cmpr.gz.zipif我想对结果做点什么:我现在的代码是:我编辑了这个问题。
    chmod 777 $(pwd)
    chmod 777 `pwd`