2012-04-18 7 views
0

bashで数値を1101のようなビットフィールド文字列に変換するには、最も簡潔な方法は何でしょうか?私は「0011010110」のような完全な文字列の形式でビットフィールドを取りますが、多くの場合にのみ必要プログラムにパラメータを送信する必要がある:なぜ効果で数値をbashのビットフィールドに変換する

は私が

echo $[2#1101] 

の反対をやろうとしています以下のように1つまたは少数のビットを有効にする:

SUPPRESSbits=$[1<<16] runscript.sh # OR 
SUPPRESSbits=$[1<<3 + 1<<9] runscript.sh # much more readable when I know what bits 3 and 9 toggle in the program 

は次いでrunscript.shなくSUPPRESSbits="1000000000000000"よりそのENVでSUPPRESSbits=65536を見て、解析エラーで終了します。

答えて

5

を:

$ dc <<<2o123p 
1111011 

$ bc <<<'obase=2; 123' 
1111011 
+0

グレート、それはほとんど 'そこdc'と比べて、より簡潔得ることはできません。だから、「bash」は数字と文字列を組み込んでいないようです – Marcos

1

私はbashの疑問が、あなたは常にperlの使用することができます簡単な方法

a=123; b=$(perl -e 'printf "%b", "'$a'"'); echo $b 
1111011 
関連する問題