Linux-shell
文章目錄
- 一、變量
- 二、菜單
- 三、算數運算
- 3.1 while加法
- 3.2 for加法
- 3.3 整數加減乘除
- 3.3 浮點數加減乘除
- 排序
- 四、循環
一、變量
調試下列 shell 程序,寫出變量$#,$0,$1,$2,$3, $@的含義。
echo “所有參數: $@” echo “前三個參數:$1 $2 $3” shift echo “程序名:$0” echo “所有參數: $@” echo “前三個參數:$1 $2 $3” shift 3 echo “程序名:$0” echo “所有參數: $@” echo “前三個參數:$1 $2 $3” exit 0$#:傳給腳本的參數個數
$0:腳本名稱
$1:傳給腳本的第1個參數
$2: 傳給腳本的第2個參數.
$3: 傳給腳本的第3個參數
$@:參數列表
修改程序,程序運行時從鍵盤輸入文件名,判斷文件是否存在,如果存在,顯示文件 內容
echo "input:" read DORF if [ -d $DORF ] then ls $DORF elif [ -f $DORF ] then cat $DORF else echo "input error" fi二、菜單
調度下列程序,使用 shell 編寫一個菜單,分別實現列出以下內容:(1)目錄內容、(2)切換目錄、(3)創建文件、(4)編輯文件、(5)刪除文件的功能。在此例 中將用到循環語句 until、分支語句 case、輸入輸出語句 read 和 echo。
while true doecho "(1)List you selected directory"echo "(2)Change to you selected directory" echo "(3)Creat a new file"echo "(4)Edit you selected file"echo "(5)Remove you selected file" echo "(6)Exit Menu"read inputif test $input = 6; then exit 0ficase $input in1) ls;;2) echo -n "Enter target directory:" read dircd $dir;;3) echo -n "Enter a file name:" read filetouch $file;;4) echo -n "Enter a file name:" read filevi $file;; 5) echo -n "Enter a file name:"read filerm $file;;*) echo "Please selected 1\2\3\4\5\6 " ;; esac done修改以上程序,用菜單形式完成算術四則混合運算。
while true doecho "(1)+"echo "(2)-" echo "(3)*"echo "(4)/"echo "(5)Exit Menu"read inputif test $input = 5; then exit 0ficase $input in1) total=0read aread blet total=`expr $a+$b` echo "a+b=$total";;2) total=0read aread b let total=`expr $a-$b`echo "a-b=$total";;3) total=0read aread blet total=`expr $a*$b`echo "a*b=$total";;4) total=0read aread blet total=`expr $a/$b`echo "a/b=$total";; *) echo "Please selected 1\2\3\4\5\6 " ;; esac done三、算數運算
3.1 while加法
(1) 用 while 循環求 1 到 100 的和。
total=0 num=0 while((num<=100)); dototal=`expr $total + $num` ((num+=1)) done echo "The result is $total"3.2 for加法
1.用 for 語句完成 1+1/2+1/3+1/4+….+1/n。
read n temp=0.000 sum=0.000 for((i=1; i<=$n; i++));doj=$iif [ $j != 0 ]thentemp=`echo "scale=3;1.000/$j" | bc`sum=`echo "scale=3;$sum+$temp" | bc`fi done echo "sum=$sum"2.編寫一個shell腳本,包含兩個數組array1和array2,分別初始化為{1,2,3,4,5}和{1,4,9,16,25}。腳本生成并顯示一個數組,其中的元素是這兩個數組中對應元素的和,數組中第一個元素是1+1=2,第二個元素2+4=6,依此類推。
declare -a array3=() declare -a array1=(1 2 3 4 5) declare -a array2=(1 4 9 16 25) for((i=0;i<=4;i++)); do array3[i]=$((${array1[i]}+${array2[i]})) done echo ${array3[*]}3.3 整數加減乘除
用菜單形式完成算術四則混合運算。
read a read b let t=`expr $a+$b` let t2=`expr $a-$b` let t3=`expr $a*$b` let t4=`expr $a/$b` echo $t $t2 $t3 $t4注意:字符串拼接or算術運算 let
3.3 浮點數加減乘除
read a read b total=$(printf "%0.2f" `echo "scale=2; $a+$b"|bc`) total2=$(printf "%0.2f" `echo "scale=2; $a-$b"|bc`) total3=$(printf "%0.2f" `echo "scale=2; $a*$b"|bc`) total4=$(printf "%0.2f" `echo "scale=2; $a/$b"|bc`) echo $total $total2 $total3 $total4排序
編寫shell腳本,完成從鍵盤輸入三個數,腳本對這三個數進行升序排序,并打印輸出。
read -ep "input:" num1 read -ep "input:" num2 read -ep "input:" num3 echo -e "$num1\n$num2\n$num3"|sort -nr四、循環
編寫一個bash腳本程序,用for循環實現將當前目錄下的所有.c文件移到指定的目錄下,最后在顯示器上顯示指定目錄下的文件和目錄。
echo -n "input:" read dir for i in `ls | grep -E "*\.c"` do mv $i $dir done ls -IS $dir編寫shell腳本,通過循環的形式在終端上打印出等腰三角形。
for ((i = 1; i < 10; i++)) dofor ((j = 10; j > i; j--))do echo -n " ";donefor ((m = 1; m <= i; m++))do echo -n "* "doneecho "" done編寫shell腳本,通過循環的形式在終端上打印出等腰梯形。
for ((a=1;a<=9;a++)) do for ((b=9;b>=$a;b--))doecho -n " "donefor ((c=1;c<=$a;c++))doecho -n "*"donefor ((d=2;d<=$a;d++))doecho -n "*"donefor ((e=1;e<=9;e++))doecho -n "*"done echo "" done總結
以上是生活随笔為你收集整理的Linux-shell的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot-MyBatis
- 下一篇: linux 其他常用命令