Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 如何在shell脚本中将一个命令的o/p赋予另一个命令的参数?_Linux_Shell_Terminal - Fatal编程技术网

Linux 如何在shell脚本中将一个命令的o/p赋予另一个命令的参数?

Linux 如何在shell脚本中将一个命令的o/p赋予另一个命令的参数?,linux,shell,terminal,Linux,Shell,Terminal,我已经编译了Linux内核,现在我想将所有*.ko文件复制到一个单独的文件夹中 所以 它会给我所有.ko文件的列表。 现在我想把这个列表作为cp命令的参数 像 那么如何在shell脚本和终端上实现这一点呢?根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在变量中,然后循环逐个提取数据 #! /bin/bash $op = find ./kernel -name *.ko" for zf in $op do cp -rpf $zf tail $zf done

我已经编译了Linux内核,现在我想将所有*.ko文件复制到一个单独的文件夹中

所以

它会给我所有.ko文件的列表。 现在我想把这个列表作为cp命令的参数


那么如何在shell脚本和终端上实现这一点呢?

根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在
变量中
,然后
循环
逐个提取数据

#! /bin/bash
$op = find ./kernel -name *.ko"

for zf in $op
do
    cp -rpf $zf
    tail $zf
done

根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在
变量中
,然后
循环
逐个提取数据

#! /bin/bash
$op = find ./kernel -name *.ko"

for zf in $op
do
    cp -rpf $zf
    tail $zf
done

这将找到以
.ko
结尾的所有文件,并将该列表放入循环中,循环遍历每个文件(即使它们有空格,但这里可能不是这样),并复制temp目录中的每个文件

find ./kernel -name "*.ko" | while read file; do cp $file temp/ ; done

这将找到以
.ko
结尾的所有文件,并将该列表放入循环中,循环遍历每个文件(即使它们有空格,但这里可能不是这样),并复制temp目录中的每个文件

find ./kernel -name "*.ko" | while read file; do cp $file temp/ ; done

xargs
通常用于此。但不是在这里

请参阅,
find
内置了此功能

试试这个:

find ./kernel -name "*.ko" -exec cp -rpf {} temp/ \;

xargs
通常用于此。但不是在这里

请参阅,
find
内置了此功能

试试这个:

find ./kernel -name "*.ko" -exec cp -rpf {} temp/ \;

另一种方法:使用xargs

find ./kernel -name "*.ko"  -print0 | xargs -0 cp -rpf -t temp/

另一种方法:使用xargs

find ./kernel -name "*.ko"  -print0 | xargs -0 cp -rpf -t temp/

这将无法处理包含空格的文件名。为什么?这有什么问题?如果有一个名为
bla-blue
的文件名,这个for循环将首先将
bla
分配给
zf
,然后将
blue
分配给
zf
,从而导致失败。哦,感谢您的解释。当我进入系统时,我会尝试这个方法。这个代码有很多错误:赋值看起来像
var=value
,没有空格和前导
$
;您需要
$(find…
来实际执行它;除非您明确知道何时不使用引号,否则请始终使用引号
“$variables”
。这不会处理带有空格的文件名。为什么?这有什么问题?如果有一个名为
bla-blue
的文件名,这个for循环将首先将
bla
分配给
zf
,然后将
blue
分配给
zf
,从而导致失败。哦,感谢您的解释。当我进入系统时,我会尝试这个方法。这个代码有很多错误:赋值看起来像
var=value
,没有空格和前导
$
;您需要
$(find…
来实际执行它;除非您明确知道何时不使用引号,否则请始终引用“$variables”。但是。。。但是但是
find
-exec
标志正是这样做的!但是但是但是
find
-exec
标志正是这样做的!假设GNU工具,
find./kernel-name“*.ko”-exec cp-rpf-t temp/{}+
假设GNU工具,
find./kernel-name“*.ko”-exec cp-rpf-t temp/{}+