0

我正在尝试查找可执行文件。尝试使用 bourne shell/bin/sh以获得更大的可移植性。下面的脚本是字符串开头echo的所有内容。find:

#!/bin/sh
DIRS=`find / -perm -4000`
for DIR in "$DIRS"
do
  case "$DIR" in
    find:*);;
  esac
done

问题)为什么find:*)没有给出命令时它会回显?

如果我*) echo "$DIR";;在 case 语句中添加子句,它将回显当前用户可执行的文件,这就是我真正想要的,但没有发生(我还没有/bin/sh真正编写脚本,但这让我感到困惑)

sedawk,,cut可以提供极大的帮助,但是其中一些命令很可能不可用(为什么它们不可用。因为它们可能不可用!)所以我认为 bourne shell 版本更便携。也许有更好的/bin/sh子字符串匹配方法,有什么想法吗?

4

2 回答 2

0

可以find直接放入for循环

for DIR in `find / -perm -4000`
于 2013-06-02T20:45:04.953 回答
0

您试图摆脱的行大概如下所示:

find: `/root': Permission denied

那是一条错误消息。命令替换

`find ...`

只捕获输出,而不是错误。您需要添加重定向以包含错误:

`find ... 2>&1`

此外,-perm 4000是 setuid 位,而不是可执行位。

于 2013-06-02T21:09:47.927 回答