このスクリプトを使用して比率を取得しようとしています。
echo "$(xrandr)"|cut -f 4 -d" "|sed 's/x/00 \\\* /g'|while read i; do echo "$i = "$(expr $i); done
ただし、次のエラーが発生します。
102400 * 768 =
expr: Syntaxerror
以前は羊やバックスラッシュを変更しようとしましたが、*
正常に動作しませんでした。
結果を正しく渡すにはどうすればよいですかexpr
?
希望の出力:
3200x1800 1.77
2048x1536 1.33
1920x1440 1.33
1856x1392 1.33
1792x1344 1.60
...
答え1
いいえecho
、他の役に立たないコマンドは必要ありません。 1 つのコマンドでawk
操作を実行する必要があります。
$ xrandr | awk -F'[x ]' '/^ /{print $4"x"$5" \t"$4/$5}'
1024x600 1.70667
800x600 1.33333
640x480 1.33333
答え2
そんなこと?
xrandr | awk '/^ +[0-9]/ {gsub(/x/,"/"); print $1}' | bc -l
答え3
はじめに...
xrandr | awk -F ' *|x' '/^ +[0-9]/{printf("%5sx%-6s %.2f\n", $2, $3, $2 / $3)}'
1920x1080 1.78
1680x1050 1.60
1600x900 1.78
1280x1024 1.25
1280x960 1.33
1280x800 1.60
...
答え4
乗算ではなく除算をしなければならないことを知ったところ、星印を誘発していたエラーが消えました。
これはなしでawk
動作しますbc
。
xrandr|egrep "x[[:digit:]]+ "|cut -f 4 -d" "|sed 's/x/00 \/ /g'|while read i; do echo "$i = "$(expr $i); done
私の結果(コンソールでCtrlキーを押しながら選択):
3200 / 1800 = 1.77
2048 / 1536 = 1.33
1920 / 1440 = 1.33
1856 / 1392 = 1.33
1792 / 1344 = 1.33
1920 / 1200 = 1.60
1920 / 1080 = 1.77
1600 / 1200 = 1.33
1680 / 1050 = 1.60
1600 / 1024 = 1.56
1400 / 1050 = 1.33
1280 / 1024 = 1.25
1440 / 900 = 1.600
1280 / 960 = 1.333
1360 / 768 = 1.770
1152 / 864 = 1.333
1024 / 768 = 1.333
800 / 600 = 1.3333
640 / 480 = 1.3333