그 수 있습니다 :분할 문자열 조건부 내가 문자열을
user:[email protected]
// 사례 # 1[email protected]
// 경우 # 2host
// 사례 # 3
(당신이 궁금하다면 그것은하는 MongoDB를 연결 문자열의)
>host
$userVar
- ->user
$passVar
->pass
다음 실행 user:[email protected]
$hostVar
가 :사례 # 1 :
나는 끝낼 필요 :
,210mongodump --host $host -u $user -p $pass ...
사례 # 2 :
[email protected]
$hostVar
->host
$userVar
->user
$passVar
- 다음> (비어 있음)
그리고 실행
mongodump --host $host -u $user ...
참고 : mongo에 대한
-p
매개 변수는 전달되지 않습니다.사례 # 3 :
host
$hostVar
->host
$userVar
-> (비어 있음)$hostVar
-> (비어 있음)
그리고 실행
mongodump --host $host ...
-u
및-p
은 전달되지 않습니다. 그래서...
나는 때문에 매개 변수의 선택적인 특성 미친려고하고있다. 내 첫 번째 해결 방법은 고전이었습니다.
user=$(echo $DBHOST | cut -d : -f 1) pass=$(echo $DBHOST | cut -d : -f 2 | cut -d @ -f 1) host=$(echo $DBHOST | cut -d : -f 2 | cut -d @ -f 2)
그러나 비트가 누락 된 경우이 문제는 완전히 해결되었습니다.
:
의 존재를 기반으로 조건부 구문 분석을 시도했지만 그 결과는 ... 여기에 표시하는 것이 당황 스럽습니다.두 번째 문제는 다음과 같습니다. "어쩌면"매개 변수를 조건없이 명령에 전달할 수 있습니까?
hostParam="--host $host"
과 같은 것을 입력 한 다음$hostParam
을 전달하면됩니까? 이것의ALL은
mongodump
때문에이 몽고의 연결 문자열을 지원하지 않습니다, 그리고 내가 할 것이다 내가 config 파일에서 보여준 형식의 설정 변수 ...
을 예수의 배쉬는 내 시간이 지나면 진화 해왔다. 당신은 저에게 params [@]가 무엇인지 말해 줄 수 있습니까? 'BASH_REMATCH'는 마술입니다, 정말 좋아합니다! – Merc
나는 그것이 "당신에게 감사하지 말라"는 것을 알고 있지만 ... 정말로 진지하게 감사드립니다. 놀라 울 정도로 간결하고 요점과 멋진 코딩. – Merc
''$ {params [@]}''는 배열'params'의 원소를 따옴표로 묶인 인자 목록으로 참조합니다. – tripleee