コマンド置換を含む環境変数が正しく設定されていません。

コマンド置換を含む環境変数が正しく設定されていません。

Windows 10 WSL(Ubuntu 20.04)を使用し、コマンドを機能させようとしていますが、環境変数の設定に問題があります。

以下を実行する必要があります。

export ADB_SERVER_SOCKET=tcp:<variable ip here>:5037

この場合、交換する必要があるIPはWindowsからインポートする必要があるため、私が思いついた最後のコマンドは次のようになります。

export ADB_SERVER_SOCKET=tcp:$(cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}'):5037

この場合、cmd.exeコマンドは以下を印刷します。

cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}'
192.168.0.11

ただし、変数が何であるかを確認したら、次のような結果が得られます。

echo "$ADB_SERVER_SOCKET"
:503792.168.0.11

また、内容全体に引用符を追加してみましたが、結果は常に同じようです。何らかの理由でtcp:1を:5037に置き換えたようです。

どのように動作させることができますか?

ベストアンサー1

〜のようにルーディックコメントで正しく言及されました。

... Windows コマンドの出力には末尾 (\r, 0x0D, ^M) 文字があり、行が後ろに折られて pos 1 で続きます。

入力するCR)と改行LF)タイプライター:CRスライド(キャリッジ)を開始位置(左端)に戻し、LF用紙ロールを次の行に進めます。

Windows行の終わりは常にCRLF、Unix行の終わりはですLF

追加の操作を実行するCRと、カーソルは最初の位置に戻り、以前の位置を上書きします。

たとえば、それを削除すると、tr予想される出力が得られます。

echo tcp:$(cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}' | tr -d $'\r'):5037

おすすめ記事