我正在尝试在 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
如果我包围环境。变量。并回应我得到换行符和空格。但如果我在不加引号的情况下回应它们,我就会把所有内容都写在一行中。
如果我将 sed 与 env.不带引号的 var 我得到带有新行和空格的变量值。
我该如何修复这个错误?
答案1
该sed
命令应该从变量内容中删除所有反斜杠,但它希望反斜杠后面跟着空格。但似乎它们后面跟着换行符,所以使用
sed -z 's:\\[[:space:]]::g'
相反(这仅适用于 GNU sed
,但因为您使用的是 Ubuntu ...)。