2016-08-11 18 views
0

コマンド出力をbashスクリプトの変数に保存します。私はこのフォーラムで見つけた可能性を試しましたが、私のスクリプトではうまくいかないのです。Bashでコマンドの出力を保存/保存する方法は?

私はコマンド:cangen vcan0 -g 4 -I 7E -L 8 -D r -vを使用してCANデータを生成します。 -g、-I、-L、-D、-Vは、CANデータの生成方法を定義するパラメータです。

通常、私はこのようなターミナルに印刷データを取得する:私は私のスクリプトを実行したとき、私は、

#!/bin/bash 

#We have to generate a virtual CAN bus Interface 

sudo modprobe vcan 
sudo ip link add dev vcan0 type vcan 
sudo ip link set up vcan0 

candata= `(cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v)` 
echo $candata 

と:私は変数で、この出力を保存したい

cangen output on bash

私のcangenコマンドから出力を取得しないでください。私は出力を得ます:

RTNETLINK answers: File exists 

私はLinuxとbashスクリプトプログラミングに多くの経験がありません。誰か助けてくれますか?

+0

'var = $(command)' – fedorqui

+1

エラーメッセージは、あなたが尋ねているコンストラクトと無関係のようです。あなたの変数にはプログラム 'cangen'の出力が既に入っていますが(かっこは余分ですが)、エラーメッセージは出力が空であることを意味するかもしれません。 – tripleee

答えて

1

あなたのスクリプトが動作すると思いますが、このメッセージは$ candataの内容で、vcan0デバイスが既に存在する理由です。 (あなたはおそらくすでに何回か試したことがありますか?)

をとにかく私は書くことを示唆している:

candata=$(cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v) 

または

candata=`cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v` 

あなたはそれを書いてきたように、あなたは上昇し、サブシェルを開きます何のための複雑さ。

+0

あなたの答えをありがとう。私はそれを数回試して、私は同じメッセージを持っています。私のスクリプトがうまくいけば、データを見ることができるはずです。私はあなたの提案を試みました、そして、私はいつも同じメッセージを受け取ります –

+0

私はトリプルリーが上記にコメントしたと私は同意します。私はまだ、スクリプト(bashに関すること)は正しいとし、問題はどこかにあると考えています。 –

+0

問題は次のコマンドです。sudo ip link add dev vcan0 type vcanこのコマンドは一度だけ実行する必要があります。 –

関連する問題