當前位置:首頁 » 編程軟體 » shell腳本乘法

shell腳本乘法

發布時間: 2022-05-02 15:16:11

1. linux中shell編程,輸出任何數的乘法

#! /bin/bash
[ "$#" -ne 1 ] || [ "$1" -lt 1 ] && echo "用法:$0 <number>" && exit;
for ((i=1;i<=$1;i++))
do
for((j=1;j<=$1;j++))
do
printf "%d*%d=%d\t" $i $j $(let i + j)
done
echo
done

上面是以參數形式運行的
~ $: ./test.sh 3
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
~ $:
希望變成運行時輸入的話使用read -r
------------------------------------------------------
話說我對你們這些拿了東西連謝謝都不說的人表示無奈。。。。

2. 如何學好linux中的shell編程

1、首先建立一個內容如下的文件,名字為date,將其存放在目錄下的bin子目錄中。

#Program date

#usageto ::show the date in this way (注釋)

echo 「Mr.$USER,Today is:」

echo date 「+%B%d%A」

echo 「Whish you a lucky day !」

2、編輯完該文件之後它還不能執行,我們需要給它設置可執行許可權。使用如下命令:

chmod +x date

通過以上過程之後,我們就可以像使用ls命令一樣執行這個shell程序.

[beichen@localhost bin]$ date

Mr.beichen,Today is:

January 13 Friday

Whish you a lucky day !

為了在任何目錄里都可以執行這個程序,可以將bin的這個目錄添加到路徑中去。

[beichen@localhost bin]$ PATH=$PATH:$HOME/bin

(註:這里的$HOME代替的是/home/beichen,而bin目錄是自己建的一個目錄)

另外一種執行date的方法就是把它作為一個參數傳給shell命令:

[beichen@localhost /]$ bash date

Mr.beichen,Today is:

January 13 Friday

Whish you a lucky day !

盡管在前面我們使用chmod +x date將date設置為可執行,其實不設置也沒有關系,但在Linux里執行它,需要先告訴系統它是一個可執行的腳本

[beichen@localhost /]$ .date

Mr.beichen,Today is:

January 13 Friday

Whish you a lucky day !

即在date前面加上一個點」.」,並且用空格與後面的shell腳本的文件名隔開。當然,不推薦這樣做。

二、shell參數

如同ls 命令可以接受目錄等作為它的參數一樣,在shell編程時同樣可以使用參數。Shell有位置參數和內部參數。

1、 位置參數

由系統提供的參數稱為位置參數。位置參數的值可以用$N得到,N是一個數字,如果為1,即$1.類似C語言中的數組,Linux會把輸入的命令字元串分段並給每段進行標號,標號從0開始。第0號為程序名字,從1開始就表示傳遞給程序的參數。如$0表示程序的名字,$1表示傳遞給程序的第一個參數,以此類推。

2、 內部參數

上述過程中的$0是一個內部變數,它是必須的,而$1則可有可無。和$0一樣的內部變數還有以下幾個。

$# ----傳遞給程序的總的參數數目

$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。

$* ----傳遞給程序的所有參數組成的字元串。

下面舉例進行說明:

建立一個內容為如下的程序P1:

echo 「Program name is $0」

echo 「There are totally $# parameters passed to this program」

echo 「The last is $?」

echo 「The parameters are $*」

執行後的結果如下:

[beichen@localhost bin]$ P1 this is a test program //傳遞5個參數

Program name is /home/beichen/bin/P1 //給出程序的完整路徑和名字

There are totally 5 parameters passed to this program //參數的總數

The last is 0 //程序執行結果

The parameters are this is a test program //返回有參數組成的字元串
下面我們利用內部變數和位置參數編寫一個名為del的簡單刪除程序:

#name: del

#author: liangnian

#this program to compress a file to the stbin

if test $# -eq 0

then

echo 「Please specify a file!」

else

gzip $1 //先對文件進行壓縮

mv $1.gz $HOME/stbin //移動到回收站

echo 「File $1 is deleted !」

fi

三、變數表達式

在上面我們編寫的小程序中我們用到了一個關鍵字test,其實它是shell程序中的一個表達式?D?D比較(test)。通過和shell提供的if等條件語句(後面我們會介紹)相結合我們可以方便的完判斷。

其用法如下:

test 表達式

表達式所代表的操作符有字元串操作符、數字操作符、邏輯操作符以及文件操作符。其中文件操作符是一種shell獨特的操作符,因為shell里的變數都是字元串,為了達到對文件進行操作的目的,於是才提供了這樣的一種操作符。

1、 字元串比較

作用:測試字元串是否相等、長度是否為零,字元串是否為NULL(註:bash區分零長度字元串和空字元串)

常用的字元穿操作符有:

= 比較兩個字元串是否相同,同則為「是」!= 比較兩個字元串是否相同,不同則為「是」

-n 比較字元串長度是否大於零,如果大於零則為「是」

-z 比較字元串的穿度是否等於零,如果等於則為「是」

2、 數字比較

這里區別於其他編程語言,test語句不使用>?類似的符號來表達大小的比較,而是用整數式來表示這些。

-eq 相等

-ge 大於等於

-le 小於等於

-ne 不等於

-gt 大於

-lt 小於

3、 邏輯操作! 反:與一個邏輯值相反的邏輯值

-a 與(and):兩個邏輯值為「是」返回值才為「是」,反之為「否」

-o 或(or):兩個邏輯值有一個為「是」,返回值就為「是」

4、 文件操作

文件測試表達式通常是為了測試文件的信息,一般由腳本來決定文件是否應該備份、復制或刪除。由於test關於文件的操作符有很多,我們只列舉一些常用的。

-d 對象存在且為目錄返回值為「是」

-f 對象存在且為文件返回值為「是」

-L 對象存在且為符號連接返回值為「是」

-r 對象存在且可讀則返回值為「是」

-s 對象存在且長度非零則返回值為「是」

-w 對象存在且可寫則返回值為「是」

-x 對象存在且可執行則返回值為「是」

file1 ?Cnt(-ot) file2 文件1比文件2新(舊)

四、循環結構語句

shell常見的循環語句有for循環、while循環、until循環

for 循環

語法:for 變數 in 列表

do

操作

done

註:變數是要在循環內部用來指代當前所指代的列表中的那個對象的。

列表是在for 循環的內部要操作的對象,可以是字元串也可以是文件,如果是文件則為文件名。

例:刪除垃圾箱中的所有.gz文件

#delete all file with extension of 「gz」 in the stbin

for I in $HOME/stbin/*.gz

do

rm ?Cf $i

echo 「$i has been deleted!」

done

執行結果如下:

[beichen@localhost bin]$.f_rmgz

/home/beichen/stbin/nessus-4.0.0.2.tar.gz has been deleted!

/home/beichen/stbin/gftp-2.2.1.tar.gz has been deleted!

3. 求解答關於linux中shell的while腳本用法

#!/bin/sh
num=1
while [ $num -le 10 ]
do
SUM =' expr $num \* $num ' #SUM等號之間不能有空格 ,等號後面語句單引號換成反引號
echo $SUM
num =" expr $num +1 " #這一行雙引號換反引號 ,1與+號之間有空格。
done
shell的語法檢查是比較嚴格的,尤其是空格以後多注意

4. 求幫寫個簡單的shell腳本文件,在線等

#!/bin/sh
i=0
while true
do
let i+=1
[ $i -eq 10 ] && exit 0
$index=`printf "%03d" $i`
command -i ${index}_input -o ${index}_output
while true
do
grep "abcdefg" ${index}_output >/dev/null 2>&1
[ $? -eq 0 ] && break
sleep 1 # usleep 200000 根據command命令執行快慢選用一個合適的值
done
done

5. 編寫一個shell腳本,列印任何數的乘法表

#!/bin/bash
read -p "Please input a integer: " num
for multiplier in {1..9}
do
ret=$((num*multiplier))
echo $num*$multiplier=$ret
done
exit 0

熱點內容
java服務端緩存 發布:2025-05-14 15:53:37 瀏覽:105
php判斷postget 發布:2025-05-14 15:34:24 瀏覽:357
linux查看電腦配置 發布:2025-05-14 15:32:07 瀏覽:317
軍用壓縮水 發布:2025-05-14 15:27:19 瀏覽:26
win7c盤加密 發布:2025-05-14 15:04:49 瀏覽:511
dm碼編程 發布:2025-05-14 15:03:56 瀏覽:405
apache加密 發布:2025-05-14 14:49:13 瀏覽:970
安卓什麼軟體蘋果不能用 發布:2025-05-14 14:49:03 瀏覽:772
jsoupjava 發布:2025-05-14 14:38:00 瀏覽:889
影豹選哪個配置最好 發布:2025-05-14 14:28:50 瀏覽:256