コマンド置換は改行を追加することですか?

コマンド置換は改行を追加することですか?

Android デバイスからデバイス アーキテクチャを照会し、それをパスで使用してファイルをデバイスにプッシュするスクリプトがあります。

コードは次のようになります:

ARCH=$(adb shell getprop ro.product.cpu.abi)
adb push libs/"$ARCH"/binary /data/local/tmp/binary

しかし、パスが壊れてしまいます。getpropコマンドをファイルにパイプすると、改行が返されることがわかります。これがおそらく問題の原因です。コマンド置換によって改行が削除されるという印象を持っていましたが、いずれにしても、次のことを試しました。

 ARCH=$(adb shell getprop ro.product.cpu.abi | tr -d '\n')

まだ運がない。

何か案は/

答え1

adbDOS の行末を持つコマンドを出力します。コマンド置換により、改行文字は削除されますが、復帰文字は削除されません。復帰文字は手動で削除する必要があります。

ARCH=$(adb shell getprop ro.product.cpu.abi)
ARCH=${ARCH%$'\r'}
adb push libs/"$ARCH"/binary /data/local/tmp/binary

関連情報