2012-12-11 8 views
1

많은 tcsh 구성 스크립트가있는 시스템에서 tcsh를 통해 대부분의 프로그램을 실행해야합니다. 나는이를 추가하여 자신이 쉽게 시도했습니다 내 ~/.zshrc :bash/zsh 인수를 다른 쉘로 전달하는 방법

t ls 같은 뭔가를 작동하지만 오류 Unknown option: `-l' Usage: tcsh ...을 제공 t ls -l, 실패, 명확하게 인수로 -l을 통과
# run command in tcsh 
function t() { 
    tcsh -c "[email protected]" 
} 

tcsh으로, ls으로가 아닙니다.

[email protected]에 전달 된 문자열을 어떻게 인용 할 수 있습니까?

답변

0

This answer는 내가 필요로 무엇을했다 :이 보인다

# run command in tcsh 
function t() { 
    C='' 
    for i in "[email protected]"; do 
     C="$C \"${i//\"/\\\"}\"" 
    done; 
    tcsh -c "$C" 
} 
2

function t { 
    tcsh -c "$*" 
} 

을 작동하고 다른 대답 ;-)

[에있는 것보다 훨씬 더 짧은 편집 :]

당신이 진짜로 따옴표로 비뚤어지고 싶다면 ... 좋아, (어쨌든 아마 더 좋은 생각이다) 기능과 단지 별칭을 사용

alias t='tcsh -c' 

[EDIT2가 : 여기 좋은 zsh을 http://zshwiki.org/home/scripting/args

+0

고마워요! '$ *'는'$ *'에 어떤 영향을 미치지 않는가? – Eric

+0

Nevermind, [this] (http://stackoverflow.com/a/3990540/102441)이 내 질문에 대답했습니다. – Eric

+0

공백이 포함 된 인수에 대해서도 제대로 작동합니까? 예 : 't ls -l "ab cd"'? – anishsane

4

zsh을에 매개 변수를 인용하는 여러 방법의 포인트 토론에있다 (비난하지)이을위한 특별한 옵션이 있습니다 : ${(q)} :

tcsh -c "${(j. .)${(q)@}}" 

합니다. First (${(q)@})는 [email protected] 배열 항목의 모든 문자를 특수 문자로 이스케이프하며, 두 번째 문자 (${(j. .)…})는 배열을 하나의 문자열로 결합합니다.

관련 문제