SS *_*gde 1 shell suse opensuse ksh shell-script
我有以下行在 ksh 中不起作用但在 sh 中工作正常:
cat `find /home/peter/databases -name "cells.txt"`
Run Code Online (Sandbox Code Playgroud)
如果此行在 /usr/bin/sh 脚本中,这将起作用。但当它在 /usr/bin/ksh 中时则不然。
任何提示为什么会这样?
我在用:
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 4
Run Code Online (Sandbox Code Playgroud)
“不工作”意味着脚本挂起(类似于cat没有提供文件名作为参数的行为)
find /home/peter/databases -name "cells.txt"ksh 脚本中的输出不是空的。在这种情况下,脚本能够列出找到的文件。但是,如果我尝试使用上述反引号对找到的文件进行分类,问题就会出现。
find 命令列出了近 1000 个文件,但其中大部分是空的。上面所说的 cat 命令在 sh 中有效,但在 ksh 中无效。
-size +0与 find选项一起使用。它是否再次表明有关缓冲区的内容?试试这个作为替代解决方案,它cat只会在找到文件时调用
find /home/peter/databases -type f -name 'cells.txt' -exec cat {} +
Run Code Online (Sandbox Code Playgroud)
(如果您的版本find不理解尾随+,请将其替换为两个字符\;)