2012-10-24 2 views
0

은 내가 떠들썩한 파티 스크립트를 통해 실행 만하면 실패 아래 명령 I 각 에코 문을 복사 작동 터미널에 붙여 넣을 경우 ...BASH - 빠른 networksetup 명령 Q

networksetup -listallntworkservices | while read line; do networksetup -setautoproxy '"'$line'"' http://etc... 

I이 이상 적으로 이름에 "이더넷"또는 "Wi-fi"가있는 네트워크 서비스에 대해서만 위의 명령을 실행하려고합니다.

+0

당신이 확실 일치하는 라인을 필터링하려면? –

답변

0

내가 명령의 입력이 무엇인지 모르는 것처럼 : "$line" 또는 "'$line'"에 의해 '"'$line'"'을 변경하십시오.

case 변수의 셸 확장을 피하려면 변수에 공백이 있으면 명령에 인수를 전달할 때 항상 변수를 큰 따옴표로 묶으십시오. 따옴표가 변수 내에서 필요한 경우

이 작동합니다 : "\"$line\""

당신이 인용 것을 사용되고 싶어요 이더넷 또는 Wi-Fi를

networksetup -listallntworkservices | 
    while read line; do 
    if [[ $line =~ (Ethernet|Wi-fi) ]]; then 
     networksetup -setautoproxy "$line" http://etc. 
    fi 
    done 
+0

Duh .... "$ line"은 잘 작동했습니다. "이더넷"또는 "Wi-Fi"에 대해서만 명령을 발행 할 수 있습니까? – user1582375

+0

당신은 bash regexp'if [[$ line = ~ (Ethernet | Wi-fi)]]를 사용할 수 있습니다; 그때 ...; fi'이 경우에는 이중 인용 부호가 필요하지 않습니다. 이중 인용 부호는 키워드이기 때문입니다. –

+0

anwser가 업데이트되었습니다. –

관련 문제