config.ini 파일이 있습니다.
repo_path=ssh://git@localhost:10022/root/
dir_path=/home/vagrant/workspace/
그리고 해당 파일에서 내보내고 연결하기 위한 "script.sh"는 다음과 같습니다.
while read -r line; do export $line; done <config.ini
repo_name=$1
repo_path=$repo_path$repo_name'.git'
dir_path=$dir_path/$repo_name
echo $repo_path
echo $dir_path
따라서 스크립트를 실행할 때:
./script.sh sample
산출:
sample.gitlocalhost:10022/root/
/sampleagrant/workspace/
예상 출력:
ssh://git@localhost:10022/root/sample.git
/home/vagrant/workspace/sample
답변1
합리적인 설명은 데이터에 캐리지 리턴이 포함되어 있다는 것입니다.
sample.gitlocalhost:10022/root/
^^^^^^^^^^
즉, 문자열은 다음과 같습니다(C 언어 문자열 리터럴 표기법 사용).
"ssh://git@localhost:10022/root/\rsample.git"
참고는 \r
캐리지 리턴을 의미합니다.
이를 터미널로 보내면 캐리지 리턴이 커서를 줄의 시작 부분으로 이동하여 접두어를 sample.git
덮어씁니다 .ssh://...
이러한 "신비한 출력" 문제를 디버깅하려면 명령 출력을 바이너리 덤프 유틸리티로 파이프할 수 있습니다 od
. 예를 들면 다음과 같습니다.
echo $strange | od -t c # see characters with backslash notation, or -t x1 for hex