case语句的意外bourne shell脚本输出

时间:2013-06-02 10:57:07

标签: sh

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

你试图摆脱的线条大概是这样的:

find: `/root': Permission denied

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

`find ...`

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

`find ... 2>&1`

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