Qt5 애플리케이션에는 다른 원격 시스템(Ssh를 통해 연결된)에 있는 일부 파일의 버전 번호를 확인하기 위해 실행하는 bash 스크립트가 있습니다.
이 스크립트를 실행할 수 있는 컴퓨터가 100대가 넘습니다. 내가 sshed한 컴퓨터에 내가 찾고 있는 파일이 있으면 스크립트 출력이 제대로 표시되지만 원격 컴퓨터에 파일이 없으면 두 줄이 연결됩니다.
예를 들어
다음과 같아야 합니다.
Operating System: 1.5.64
sw_install: 1.16
Kate 1.1
하지만 원격 파일이 존재하지 않으면
Operating System: sw_install
Kate: 1.1
원격 파일이 존재하지 않는 경우(존재하는 경우) 줄을 구분하는 방법에 대한 아이디어가 있습니까? 파일이 실제로 존재할 때 출력이 원하는 모양이 아니기 때문에 두 ssh 명령 사이에 "echo" 줄을 넣거나 -n을 제거하고 싶지 않습니다.
매우 간단한 대답이 있기를 바랍니다.
도와주셔서 감사합니다! !
echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\""
센토스 7.2
답변1
cat을 파이프 tr -d '\n'
하고 명령 뒤에 명시적으로 줄바꿈을 추가할 수 있습니다.
답변2
echo
전혀 사용하지 마십시오. 명시적으로 개행 문자를 사용 printf
하고 추가하세요. 이것을 변경하십시오:
echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\""
이와 관련하여:
os=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
swInstall=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1")
kate=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\"")
printf 'Operating System: %s\nsw_intall: %s\nKate: %s\n' "$os" "$swInstall" "$kate"
또는 구분 기호를 사용하세요.
cat<<EoF
Operating System: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
sw_install: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1")
Kate: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\"")
EoF