【腳本1】打印形狀
一、腳本
打印等腰三角形、直角三角形、倒直角三角形、菱形
#!/bin/bash
#等腰三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
for ((j=$n;j>i;j--))
do
echo -n " "
done
for m in `seq 1 $i`
do
echo -n "*"
done
echo
done
#直角三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
for ((j=1;j<=$i;j++))
do
echo -n "*"
done
echo
done
#倒直角三角形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
for j in `seq $i $n`
do
echo -n "*"
done
echo
done
#菱形
read -p "Please input the length:" n
for i in `seq 1 $n`
do
for ((j=$n;j>i;j--))
do
echo -n " "
done
echo
for m in `seq 1 $i`
do
echo -n "*"
done
echo
done
for i in `seq 1 $n`
do
for ((j=1;j<=$i;j++))
do
echo -n " "
done
echo
for ((k=$i;k<=$n-1;k++))
do
echo -n "*"
done
echo
done
二、小結
1、for循環語句
參考:
[1]shell腳本之for循環
[2]shell條件控制和循環結構
1.1 for語法結構
for 循環條件 do shell語句 done
2、seq命令
參考:
[1]shell腳本之seq命令
2.1 seq命令語法
用法:seq [選項]... 尾數 或:seq [選項]... 首數 尾數 或:seq [選項]... 首數 增量 尾數 選項: -f, --format=FORMAT use printf style floating-point FORMAT -s, --separator=STRING use STRING to separate numbers (default: \n) -w, --equal-width equalize width by padding with leading zeroes
3、echo命令
參考:
[1]linux echo命令的-n、-e兩個參數
3.1 echo命令語法
echo -n 不換行輸出 echo -e 處理特殊字符 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出: \a 發出警告聲; \b 刪除前一個字符; \c 最后不加上換行符號; \f 換行但光標仍舊停留在原來的位置; \n 換行且光標移至行首; \r 光標移至行首,但不換行; \t 插入tab; \v 與\f相同; \\ 插入\字符; \nnn 插入nnn(八進制)所代表的ASCII字符;
4、read命令
參考:
[1]SHELL腳本--read命令
4.1 read命令語法
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [var_name1 var_name2 ...]
read命令用於從標准輸入中讀取輸入單行,並將讀取的單行根據IFS變量分裂成多個字段,並將分割后的字段分別賦值給指定的變量列表var_name。第一個字段分配給第一個變量var_name1,第二個字段分配給第二個變量var_name2,依次到結束。如果指定的變量名少於字段數量,則多出的字段數量也同樣分配給最后一個var_name,如果指定的變量命令多於字段數量,則多出的變量賦值為空。
如果沒有指定任何var_name,則分割后的所有字段都存儲在特定變量REPLY中。
選項說明: -a:將分裂后的字段依次存儲到指定的數組中,存儲的起始位置從數組的index=0開始。 -d:指定讀取行的結束符號。默認結束符號為換行符。 -n:限制讀取N個字符就自動結束讀取,如果沒有讀滿N個字符就按下回車或遇到換行符,則也會結束讀取。 -N:嚴格要求讀滿N個字符才自動結束讀取,即使中途按下了回車或遇到了換行符也不結束。其中換行符或回車算一個字符。 -p:給出提示符。默認不支持"\n"換行,要換行需要特殊處理,見下文示例。例如,"-p 請輸入密碼:" -r:禁止反斜線的轉義功能。這意味着"\"會變成文本的一部分。 -s:靜默模式。輸入的內容不會回顯在屏幕上。 -t:給出超時時間,在達到超時時間時,read退出並返回錯誤。也就是說不會讀取任何內容,即使已經輸入了一部分。 -u:從給定文件描述符(fd=N)中讀取數據。