2017-09-22 3 views
-1

だから、基本的に私は、変数を持って、新しい変数を作成するために一連の命令の出力を使用するにはどうすればよいですか?

v=overflow_12 

は、今私はオーバーフロー分割する_cut -d区切りコマンドをやっているし、私が行っている12そのうち、この変数vを考慮することができます:

echo $v | cut -d '_' -f 2 

をそれは私に答え12を与えます。しかし、私はどのように変数に12を格納し、最終的に1を増やして13を作るでしょうか?

私が試した:$iに12を格納する必要があり

i= echo $v | cut -d '_' -f 2 

を?しかし、私がしたとき:

echo $i 

それは単なる空白の答えですか?私は最終的にこの変数を1つ増やす必要がありますが、なぜ12が$iに格納されていないのか分かりませんか?

+0

を使用することをお勧めします: 'i =" $ {v ## * _} " –

+0

bashで:' v = overflow_12;宣言-i値= "$ {v#* _}" +1;エコー$値 '? – Cyrus

+1

あなたの投稿を誹謗しないでください。 –

答えて

0

$(command)を使用すると、コマンドの出力を文字列として取り込むことができます。

i=$(echo $v | cut -d '_' -f 2) 

また、接頭辞を直接bashで削除することもできます。

i=${v#*_} 

#文字列のプレフィックスを除去し、*_は、アンダースコアが続くものと一致しました。

0

変数の割り当てに間違った構文を使用しています。変数にパイプするには|を使用することはできません。=の後ろにスペースを入れることはできません。これは動作します:

v=overflow_12 
i=$(echo $v | cut -d '_' -f 2) 
echo $i 
0

i =コマンドの結果にiを設定するには、i = $(コマンド)を使用します。

0

は非常に古いものを除いて、ほとんどのbash-のバージョンで動作します

i=$(echo $v | cut -d '_' -f 2) 

います。

i=`echo $v | cut -d '_' -f 2` 

を行う古代のbashのバージョンでは、私はあなたが外部コマンドを必要としない、bashののパラメータ展開はそれを行うことができます。この場合は、「ここに文字列」構文<<<の代わりecho

i=$(cut -d '_' -f 2 <<< $v) 
関連する問題