2013-04-18 18 views
18

この結果をシェル変数に割り当てる方法は?出力をシェルスクリプト変数に割り当てる方法は?

入力:

echo '1+1' | bc -l

出力:

2

試み

(動作しませんでした)

#!bin/sh 
a=echo '1+1' | bc -l 
echo $a 
+0

[コマンドからの出力に等しいBASH変数を設定する方法は?](http://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to -a-commandからの出力) – Jahid

答えて

32

コマンド置換と呼ばれるシェル機能を探しています。

CMD置換の2つの形態

  1. バック石時代にオリジナル、が、すべてのUnixライクなシェル(だけでなく、ほとんどすべて)で完全に移植し、利用可能ながあります。

    あなたは

    $ a=$(echo 1+1 | bc -l) 
    $ echo $a 
    2 
    $ 
    
つまり、あなたの価値バックティック文字の内部でコマンドを生成、 $(cmd)付属すなわち

$ a=`echo 1+1 | bc -l` 
$ echo $a 
2 
$ 
  • 現代、探して少ない不格好、簡単にネスト可能なCMD-置換を、囲み

    あなたの「she-bang」行には#!/bin/shと表示されていますので、実際のUnixプラットフォームで実行している場合は、/bin/shはオリジナルのBourneシェルであり、上記のオプション1を使用する必要があります。

    #!/bin/shをまだ使用しているときにオプション2を試しても問題がなければ、モダンなシェルがあります。 echo ${.sh.version}または/bin/sh -c --versionと入力して、有用な情報があるかどうかを確認してください。バージョン番号を取得した場合は、新しいシェルに含まれる追加機能について知りたいでしょう。あなたが本当にbashの、zshの、は、ksh93の+を使用している場合は、新しい機能の

    言えば、あなたは

    a=$((1+1)) 
    

    それとも、もっと数学演算をやっているならば、それはすべての内部にとどまるよう、あなたのサンプルコードを書き換えることができます(bcとすることができます一方で)あなたは、余分なプロセスの作成を避けることができますが、シェルで浮動小数点演算を行うことはできませんが、いずれの場合も

    ((b=1+1)) 
    echo $b 
    2 
    

    :スコープは、次のようなシェルの機能演算を使用することができます。

  • +0

    Wonderfullの説明。非常にThx。正常に動作します! – GarouDan

    関連する問題