変数を使用したbashスクリプトの開発

変数を使用したbashスクリプトの開発

再起動するたびに、接続されたスキャナのUSBポート割り当てが正しくありません。私の目標は、再起動時に実行されるスクリプトを生成して対話を削除することです。

ポート割り当てを手動で変更する方法は次のとおりです。

    1) lsusb -d 04f9:0272  #the output identifies the correct ports of the scanner       
    2) sudo chmod a+w /dev/bus/usb/001/002 #scanner now works

次のスクリプトは変数を生成しますが、「対応するファイルまたはディレクトリはありません」というメッセージでchmodが失敗します。

    buss=$(lsusb -d 04f9:0272 |awk '{print $2}')
    devis=$(lsusb -d 04f9:0272 |awk '{print $4}')
    sudo chmod a+w /dev/bus/usb/$buss/$devis

$bussまたは$devisをechoすると、正しい値が表示されます。このプロセスを自動化するには、より多くの作業が必要であることがわかります。

ベストアンサー1

問題はlsusb出力の特定の形式である可能性があります。

% usbid=1d6b:0001
% lsusb -d $usbid | awk '{ print "/dev/bus/usb/" $2 "/" $4 }'
/dev/bus/usb/001/001:

最後に追加のコロンを書き留めます。幸いなことに、awkやシェルから簡単に削除できます。以下はawkの例です。

% usbid=1d6b:0001
% lsusb -d $usbid | awk '{ a = $4; sub(/:$/, "", a); print "/dev/bus/usb/" $2 "/" a }'
/dev/bus/usb/001/001

おすすめ記事