두 명령줄 모두에서 공백이 없는 파일 이름

두 명령줄 모두에서 공백이 없는 파일 이름

두 개의 Linux 명령을 실행 중인데 두 값을 구분하는 공백과 점 없이 결과 값을 파일 이름에 입력하고 싶습니다. 지금까지 나는 이것을 얻었습니다 :

pid=`sudo dmidecode -s system-product-name`
vid=`sudo dmidecode -s system-version`
# cleanup spaces in $pid and $vid
filename=$pid.$vid.tar.gz

두 변수의 공백을 정리하는 방법은 무엇입니까?

답변1

bash "패턴 대체"를 사용할 수 있습니다(자세한 내용은 해당 문자열에 대한 매뉴얼 페이지를 검색하세요).

filename=${pid// /}.${vid// /}.tar.gz

이중 슬래시는 패턴의 모든 항목을 대체합니다. 이중 슬래시와 다음 슬래시 사이의 공백이 패턴입니다. 교체 패턴은 마지막 슬래시 뒤에 나오며, 이 경우 비어 있습니다. 마지막 슬래시를 제거할 수 있지만 명확성을 위해 공백을 포함하므로 이를 선호합니다.

답변2

sed를 사용할 수 있습니다:

pid=$(sudo dmidecode -s system-product-name | sed 's/  *//g')

관련 정보