Gazebo를 설치할 때 sed 's:\\ ::g'가 제대로 작동하지 않는 것 같습니다.

Gazebo를 설치할 때 sed 's:\\ ::g'가 제대로 작동하지 않는 것 같습니다.

Ubuntu 17.04에서 Gazebo를 컴파일하려고 합니다.

나는 이것을 팔로우하고 있다지시하다, 그러나 다음은 버그인 것 같습니다.

sudo apt-get install $(sed 's:\\ ::g' <<< $BASE_DEPENDENCIES) $(sed 's:\\ ::g' <<< $GAZEBO_BASE_DEPENDENCIES)

여기서 무슨 일이 일어나고 있는지 이해하지 못합니다.sed 's:\\ ::g'

이전 명령을 실행하면 sudo apt-get install ...다음 오류가 42번 발생합니다.

E: 패키지를 찾을 수 없습니다\

나는 두 가지 변수에 모두 응답했습니다.

echo $BASE_DEPENDENCIES
build-essential \ cmake \ debhelper \ mesa-utils \ cppcheck \ xsltproc \ python-psutil \ python \ bc \ netcat-openbsd \ gnupg2 \ net-tools \ locales

또 다른:

echo $GAZEBO_BASE_DEPENDENCIES
libfreeimage-dev \ libprotoc-dev \ libprotobuf-dev \ protobuf-compiler \ freeglut3-dev \ libcurl4-openssl-dev \ libtinyxml-dev \ libtar-dev \ libtbb-dev \ libogre-1.9-dev \ libxml2-dev \ pkg-config \ qtbase5-dev \ libqwt-qt5-dev \ libltdl-dev \ libgts-dev \ libboost-thread-dev \ libboost-signals-dev \ libboost-system-dev \ libboost-filesystem-dev \ libboost-program-options-dev \ libboost-regex-dev \ libboost-iostreams-dev \ libbullet-dev \ libsimbody-dev \ \ libignition-transport3-dev \ libignition-math3-dev \ libignition-msgs-dev \ libtinyxml2-dev \ libsdformat5-dev

이 명령의 출력은 다음 sed 's:\\ ::g' <<< $BASE_DEPENDENCIES과 같습니다.

build-essential \
                   cmake           \
                   debhelper       \
                   mesa-utils      \
                   cppcheck        \
                   xsltproc        \
                   python-psutil   \
                   python          \
                   bc              \
                   netcat-openbsd  \
                   gnupg2          \
                   net-tools       \
                   locales

고쳐 쓰다
sed 's:\\[[:space:]]::g' <<< $BASE_DEPENDENCIES다음 출력으로 명령을 시도했습니다.

user@Mpc:~$ sed 's:\\[[:space:]]::g' <<< $BASE_DEPENDENCIES
build-essential \
                   cmake           \
                   debhelper       \
                   mesa-utils      \
                   cppcheck        \
                   xsltproc        \
                   python-psutil   \
                   python          \
                   bc              \
                   netcat-openbsd  \
                   gnupg2          \
                   net-tools       \
                   locales

업데이트 2
sed 명령이 괜찮은 것 같습니다. 환경 변수를 사용하지 않고 다음을 수행하면 올바른 문자열을 얻습니다.

user@pc:~$ echo 'build-essential \ cmake \ debhelper \ mesa-utils \ cppcheck \ xsltproc \ python-psutil \ python \ bc \ netcat-openbsd \ gnupg2 \ net-tools \ locales' | sed 's:\\ ::g'
build-essential cmake debhelper mesa-utils cppcheck xsltproc python-psutil python bc netcat-openbsd gnupg2 net-tools locales

업데이트 3
내가 환경을 둘러싸고 있다면. 변하기 쉬운. 이에 대한 응답으로 나는 개행과 공백을 얻습니다. 하지만 따옴표 없이 응답하면 모든 내용이 한 줄에 표시됩니다.

따옴표 없이 env.var과 함께 sed를 사용하면 새 줄과 공백이 포함된 변수 값을 얻습니다.

이 오류를 어떻게 해결할 수 있나요?

답변1

sed명령은 변수 내용에서 모든 백슬래시를 제거해야 하지만 백슬래시 뒤에는 공백이 와야 합니다. 그러나 그 뒤에 개행 문자가 오는 것 같으므로 다음을 사용하십시오.

sed -z 's:\\[[:space:]]::g'

대신 (이것은 GNU에만 적용되지만 sedUbuntu를 사용하고 있기 때문에...)

관련 정보