특수 콘텐츠 및 한 줄씩 [중복]

특수 콘텐츠 및 한 줄씩 [중복]

동지! 파일이 있습니다:

# cat file
'\\.\Aktiv Co. Rutoken S 00 00\USER1@R69-20180109'
'\\.\Aktiv Co. Rutoken S 00 01\USER2@R69-20180109'

한 줄씩 실행해야 합니다.

for LINE in `cat file` 
do
/opt/cprocsp/bin/amd64/certmgr -inst -cont $LINE
done

하지만! 파일에는 '\. "set -x"를 사용하여 스크립트를 시작하면 다음이 표시됩니다.

+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont ''\''\\.\Aktiv'
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont Co.
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont Rutoken
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont S
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont 00
Error
+ for LINE in '`cat /home/user/Aktiv`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont '00\USER1@R69-20180109'\'''
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont ''\''\\.\Aktiv'
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont Co.
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont Rutoken
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont S
Error
+ for LINE in '`cat file`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont 00
Error
+ for LINE in '`cat /home/user/Aktiv`'
+ /opt/cprocsp/bin/amd64/certmgr -inst -cont '01\USER2@R69-20180109'\'''

이상적으로는 다음과 같아야 합니다.

/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\USER1@R69-20180109'
/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 01\USER2@R69-20180109'

이게 다 특별한 콘텐츠(파일)에서 나오는 것 같아요. 어떤 아이디어가 있나요?

답변1

cat file예, 출력 을 반복하면성격.

한 가지 해결책:

PATH=/opt/cprocsp/bin/amd64:$PATH

while IFS= read -r line; do
    certmgr -inst -cont "$line"
done <file

이렇게 하면 줄을 한 줄씩 읽고 백슬래시와 단어 사이의 공백을 올바르게 읽습니다. 인용문을 참고하세요 $line. 바라보다""IFS=read-r-line" 이해".

원래는 내가 사용한 버전을 포함시켰지만 어떤 경우에는 이것이 데이터의 백슬래시를 xargs유지하지 않고 작은따옴표를 제거했다는 것을 알았습니다 .file

관련 정보