기본 설정 파일을 읽고 기본 프린터의 값을 얻고 싶습니다. 그래서이 예제에서는 결과를 Zebra_GK420D
으로 리턴 할 것을 기대합니다.bash는 소스를 사용하여 config.ini 파일의 기본 변수 값을 기반으로 변수를 읽습니다.
내 config.ini 파일은 다음과 같이
enable_printing=yes
default_printer=printer1
printer1=Zebra_GK420D
printer2=DYMO_LabelWriter_4XL
create_proof=yes
나는 다음과 같은 bash는 스크립트를 사용 : 나는 스크립트를 실행하면
1 #!/usr/bin/env bash
2
3 #Define filename
4 fConfig=config.ini
5
6 #If file exists, read in variables.
7 if test -f $fConfig ; then
8 source $fConfig
9 fi
10
11 echo The default_printer is: ${default_printer%?}
12
13 echo The name of the default_printer is: $(${default_printer%?})
, 그것은 반환
The default_printer is: printer1
./test.sh: line 13: printer1: command not found
어떻게 bash 스크립트를 수정하여 다음을 리턴 할 수 있습니까?
config.ini 파일을 Windows에서 호스팅하기 때문에 보조 노트로The default_printer is: printer1
The name of the default_printer is: Zebra_GK420D
16,각 라인 끝에 \r
로 반환 드라이브, 그래서 각 행의 마지막 문자를 제거 %?
을 사용하고 있습니다. 파일의 마지막 줄에는 끝에 \r
이 없기 때문에 위험합니다. 마지막 문자를 맹목적으로 제거하는 대신 \r
만 제거하려면 %?
대신 무엇을 사용할 수 있습니까?
감사합니다.
DOS 라인 끝을 사용하지 않도록 설정 파일을 수정하면 간접 매개 변수 확장을 사용할 수 있습니다 :'$ {! default_printer}'. (수정하지 않고'tmp = $ {default_printer %?}; echo $ {! tmp}'.) 두 줄만 입력하시면됩니다. – chepner
제거 할 문자를 정확하게 지정할 수 있습니다 :'$ {default_printer % $ '\ r'} '. 그러나 나는 캐리지 리턴으로 소비자를 다루는 것보다는 파일을 수정하는 것을 강력히 권장한다. – chepner
파일을 소싱하는 동안 캐리지 리턴을 걸러 내기 위해 프로세스 대체를 시도 할 수 있습니다.'source <(tr -d '\ r'<$ fConfig)' –