2014-02-21 4 views
2

이 스크립트가있는 경우에만 bash에서 스크립트를 실행하는 더 간단한 방법이 있는지 궁금합니다. 내가 원하는 것은 동일합니다 :bash가있는 경우에만 스크립트를 실행하는 방법은 무엇입니까?

if [ -x $name ] 
then 
    $name 
fi 

또는

[ -x $name ] && $name 

내가 무엇을 찾고 스크립트 이름의 반복을 제거

exec_if_exist $name 

같은 것입니다.

bash에서 이것을 단순화하는 방법이 있습니까? 커맨드를 찾을 수없는 오류를 줄 수있는 함수 또는 "추측"실행을 원하지 않습니다.

최저

당신은 type 명령으로 어느 정도를 단순화 할 수
+0

'rm -f script.sh'와 같이 파일을 지우는'rm' 명령처럼 되길 원하십니까? 귀하의 경우에는 그것을 실행하고 싶습니다. –

+0

나는 더 간단한 것을 알아 냈습니다 : test -x $ name && $ _ – Jaro

답변

1

. 테스트 할 때 파일의 전체 또는 상대 경로가 필요합니다. type으로 PATH를 검색합니다. 이 STDERR에 STDOUT 및 실패 성공을두고 있기 때문에

type $name && $name 

는 출력을 통해 당신에게 완벽하게 제어를 제공, 또한 좋은

# mute success 
type >/dev/null 
# mute fail 
type 2>/dev/null 
# mute both 
type &>/dev/null 
1

exec_if_exist() { 
    test -x $1 && $1 
} 

그리고하지, 경로 수도 $ 1을 (를) 호출 할 때 고려해야합니다.

+0

어딘가에 정의하고 나중에 처리 할 필요가있는 함수를 원합니다. thx – Jaro

+0

안녕하세요, 조금 더 간단한 형식을 알아 냈습니다. test -x $ name && $ _ 그것은 저에게 효과적입니다! – Jaro

+0

반갑습니다. 그래, 너의 방식으로 일하는 것이 좋다. $ _ 내게 오지 않았다 ... –

관련 문제