2013-08-06 1 views
2

디렉토리에있는 모든 * .sh로 파일을 ...내가 어떤 디렉토리에있는 모든 * .sh로 파일을 찾으려하지만, 일부 오류가 스크립트에있다

#!/bin/sh 
for plik in /var/panel/starter/* 
do 
    if [ $(basename "$plik") != "priority" ] && [ $(basename "$plik") != "PRIORITY" ] 
    then 
    for plik in $plik/* 
    do 
     filename=$(basename "$plik") 
     extension="${filename##*.}" 
     filename="${filename%.*}" 
     if [ "$extension" == "sh" ] 
     then 
     echo $plik 
     fi 
    done 
    fi 
done 

의/var의 일부 폴더가 있습니다 찾기/패널/시동기, 그리고이 폴더에는 셸 스크립트가있어서 루프를 두 번 사용했습니다.

[: 19: *: unexpected operator 
[: 19: sh: unexpected operator 
[: 19: sh: unexpected operator 
[: 19: sh: unexpected operator 
[: 19: *: unexpected operator 

것 같아요 문제가 같은 빈 폴더에 있습니다 : :

오류입니다

/var/panel/starter/cs16/* 

내가 어떻게 처리 할 생각이 없습니다.

+1

방금'-name 찾을 수 있습니다 "* .sh로"': – Kent

+1

'/ var/panel/starter/*. sh'? – devnull

+0

예일뿐입니다. 나중에 그 스크립트를 실행하고 싶습니다. echo $ plik 대신 sh $ plik이됩니다. if [ "$ extension"== "sh"]'조건이 없으면'/ var/panel/starter/cs16/*'도 실행하고 나는 그것을 피하려고합니다. @devnull, 작동하지 않습니다. –

답변

1

sh: unexpected operator 실마리를 제공해야합니다.

당신은 라인 (19) 잘 작동, 아니면 그냥 =를 사용해야합니다 bash를 사용하여 스크립트를 실행에 == 연산자를 지원하지 않습니다 sh를 사용하여 스크립트를 실행합니다.

find path_to_folder -iname "*.sh" 
+0

감사합니다. 그것은 내가 처음 알았던 쉘 스크립트입니다. –

0

왜 find와 grep을 사용하지 않습니까?

find /var/panel/starter/ -name "*.sh" | grep -iv "/var/panel/starter/priority" 
6

왜 스크립트는 사용하여 동일한을 달성 할 수있는 때를 사용 하는가? 필터를하고 싶다면`-regex`를 사용하거나 출력을`grep`으로 파이프 할 수 있습니다. 또는 귀하의 요구 사항을 오해했습니다.
관련 문제