私は数値を10進から2進数に変換し、次の変数に値を格納しようとしました。
num1=10
echo "obase=2;$num1" | bc | tee -a register.txt
しかし、アイデアは単に変換して次のファイルに保存するだけなので、画面に表示したくありません。register.txt
どうすればいいですか?
答え1
output redirection
これを行うには、次の方法を使用できます。
$ bc -l <<<"obase=2;$num" > register.txt
上記のコマンドは前の結果を上書きします。結果を追加する場合。
$ bc -l <<<"obase=2;$num" >> register.txt
>>
- 追加モードで出力(STDOUT)メッセージをリダイレクトします。
>
- オーバーレイモードで出力(STDOUT)メッセージをリダイレクトします。
<<<
- 単語が拡張され、標準入力のコマンドに提供される文字列は次のとおりです。
答え2
このtee
コマンドは出力を分割するために使用され、テキストをファイルや画面にインポートするために最も一般的に使用されます。
単に省略して、ファイルに出力リダイレクト(追加)を使用してください>>
。
echo "obase=2;$num1" | bc >> register.txt
答え3
ティーを使う代わりにI/O リダイレクトシェル:
echo "obase=2;$num1" | bc >>register.txt
- ステートメントにより、出力はファイルに>>
リダイレクトされます(>
リダイレクト、追加)。理由フラグもファイルに追加されます。出力をシェルに表示したい場合にのみ必要です。>>
-a
tee
tee
そしてファイルにリダイレクトします。
答え4
シェルがksh
またはの場合はバイナリに変換するzsh
必要はありません。bc
ksh/zshから:
$ typeset -i2 num1=10
$ print -- "$num1"
2#1010
$ print -- "${num1#??}"
1010
そしてzsh
:
$ print -- $(( [##2] num1 ))
1010
(zshは引数拡張や算術拡張時に分割+globを実行しないので、引用しても問題にはなりませんが、引用する必要はありません。)
そしてksh93
:
$ num1=10
$ printf '%..2d\n' "$num1"
1010
どちらかを追加して> register.txt
その出力をファイルにリダイレクトする(該当するコンテンツがある場合はコンテンツを置き換える)、>> register.txt
または追加ファイルに書き込みます(tee -a
これに似ていますが、tee
入力を標準出力にも書き込みます)。
¹数値が64ビット整数に合わない場合