2013-06-02 50 views
0

我正在嘗試查找可執行文件。嘗試使用bourne外殼/bin/sh以獲得更大的便攜性。在腳本echo的下面,所有內容均以字符串開頭的find:表示。意外的bourne shell腳本語句輸出

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

問題)爲什麼在沒有給出命令時回顯find:*)

如果我將*) echo "$DIR";;子句添加到case語句中,它會回顯當前用戶可執行的文件,這是我真正想要的,但沒有發生(我沒有真的爲/bin/sh編寫腳本,但是這個大爲不解我)

sedawkcut可以幫助極大,但其中的一些命令很可能將無法使用(他們爲什麼不提供。因爲他們可能不是!),所以我想一個Bourne shell版本更便攜。也許/bin/sh子串匹配有更好的辦法,有什麼想法嗎?

回答

0

您試圖線條擺脫大概是這樣的:

find: `/root': Permission denied 

這是一條錯誤消息。命令替換

`find ...` 

只捕獲輸出,而不是錯誤。您需要添加一個重定向到包含錯誤:

`find ... 2>&1` 

而且,-perm 4000是setuid位,而不是一個可執行位。

+0

是的意思是說setuid。忘了重定向錯誤,杜。自從我編寫腳本以來已經有一段時間了,謝謝你。 – gwillie