五個簡單的shell腳本


 1、編寫shell腳本 ex1.sh,提示用戶輸入用戶名,並判斷此用戶名是否存在。

(提示:利用read、grep和/etc/passwd) 

#!/bin/bash

echo "請輸入用戶名"

read username   #相當於scanf

if grep $username /etc/passwd; then   #if的結尾要有fi
echo "存在"
else 
echo "不存在"
fi

 

2、 編寫shell腳本 ex2.sh,能將命令行參數相加並輸出,如: ex2 1 3 8輸出結果為12。

(提示:利用$@和循環結構)

#①可以把命令行的任意個數字相加

#!/bin/bash

sum=0          #賦初值
for var in $@          #命令行的所有值 用以循環
do sum=$[$sum+$var]      #$相當於地址符
done
echo "$sum"

 

#②可以把命令行三個數相加

#!/bin/bash

CITY=SUM;
let SUM=$1+$2+$3
echo "$SUM"

 

 

3、 編寫shell腳本 ex3.sh,能將命令行參數所代表的文件統計行數,相加並輸出結果,如: ex3 file1 file2 file3 ,統計三個文件的行數的總數。

(提示:利用$@和循環結構)

#!/bin/bash

sum=0 
nub=0
for var in "$@"    
do 
nub=$(sed -n '$=' $var)   #讀取文件中數據的行數
sum=$[$sum+$nub]
done
echo "$sum"

 

4、 編寫shell腳本 ex4.sh,將當前目錄下的.c文件移到命令行參數指定的目錄下,並按文件大小排序,顯示移動后指定目錄的內容。

(提示:利用$1,sort和ls)

#!/bin/bash

echo "請輸入地址:"

read addr       #scanf輸入地址

mv ./*.c $addr     # ./表示當前目錄 *.c表示所有一.c結尾的文件 mv移動操作

ls -S $addr #ls 顯示當前目錄下的文件夾 -S將文件大小排序

 

5、 編寫shell腳本 ex5.sh,輸出命令行參數中的最大數,如: ex2 1 3 8輸出結果為8;如果命令行參數中有非數字參數則報錯。

(提示:利用$@、循環結構和分支判斷)

#!/bin/bash

max=$1

for var in "$@"
do 
if [[ $var != *[!0-9]* ]];then     #*X*匹配任何包含x的字符串(開頭,中間或結尾),[!0-9]匹配任何非0-9的字符,合起來就是匹配沒有0-9的字符
if [ $var -gt $max ];then       #比較var和max的大小 -gt表示">"
max=$var
fi
else
echo "含有其他字符"
exit            #結束
fi
done

echo "$max"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM