Bashで長方形を描く

Bashで長方形を描く
#!/bin/bash
echo "enter the sizeof the rectangle"
read size
clear
for (( i = 1; i <= size; i++ )); do
for (( j = 1; j <= size; j++ )); do
if [ "$i" == 1 ] || [ "$i" == "$size" ] || [ "$j" == 1 ] || [ "$j" == "$size" ]
then
#statements
tput cup $i $j
echo "*"
fi
done
done

10行のコードを使用するようにどのように変更しますかechotput cup私はLinuxを使用しています。

ベストアンサー1

#!/bin/bash

read -p 'Size: ' sz

topbottom=$(yes '*' | head -n "$sz" | tr -d '\n' )
printf -v midrows '*%*s*' "$((sz-2))" ""

printf '%s\n' "$topbottom"
yes "$midrows" | head -n "$((sz-2))"
printf '%s\n' "$topbottom"

これにより、上下の行(同じ)を計算し、中間行(これも同じ)を計算します。その後、上下の行の出力は2回の呼び出しで行われ、printf中間行はyesユーティリティによって出力されます(正しい行数で切り捨てられます)。

*%*s*呼び出しの暗号化された形式はprintf"one *, 次の引数で提供される幅の文字列、その後別の*" を意味します。幅は指定された長方形のサイズから2を引いたもので、文字列は空の文字列です(スペースで埋められます)。

エマルジョン:

おすすめ記事