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
私が環境を囲んでいる場合。変わりやすい。これに応じて、私は改行とスペースを取得します。ただし、引用符なしで応答すると、すべての内容が1行に表示されます。

引用符なしでenv.varでsedを使用すると、新しい行とスペースを含む変数の値が得られます。

このエラーをどのように解決できますか?

ベストアンサー1

このsedコマンドは変数の内容からすべてのバックスラッシュを削除する必要がありますが、バックスラッシュの後にスペースを入れる必要があります。しかし、その後に改行文字が続くようですので、次のようにしてください。

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

代わりに(これはGNUにのみ適用されますが、sedUbuntuを使用しているため...)

おすすめ記事