0

実行可能ファイルを見つけようとしています。移植性を高めるためにbourne シェルを使用しようとしています/bin/sh。以下のスクリプトは、文字列の先頭にあるechoすべてのものです。find:

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

QUESTION)find:*)コマンドが与えられていないのにエコーがかかるのはなぜですか?

caseステートメントに句を追加する*) echo "$DIR";;と、現在のユーザーが実行できるファイルがエコーされます。これは私が本当に望んでいるすべてですが、起こっていません(/bin/sh実際にはスクリプトを作成していませんが、これは私を困惑させました)

ええsed、、、非常awkcut役立ちますが、これらのコマンドのいくつかはおそらく利用できないでしょう (なぜ利用できないのでしょうか? なぜなら利用できないかもしれないからです!) ので、ボーン シェル バージョンの方が移植性が高いと思いました。部分文字列の一致にもっと良い方法があるかもしれませんが/bin/sh、アイデアはありますか?

4

2 に答える 2

0

findforループに直接入れることができます

for DIR in `find / -perm -4000`
于 2013-06-02T20:45:04.953 に答える