【鳥哥的Linux私房菜】第十二章、學習shell腳本

第十二章、學習shell腳本

以下皆爲實踐題,請自行編寫出程序

  1. 請建立一個腳本,當你執行該腳本的時候,該腳本可以顯示:(1)你目前的身份(用 whoami) (2)你目前所在的目錄(用pwd)
#!/bin/bash
who am i
pwd
exit 0

  1. 請自行編寫一個程序,該程序可以用來計算【你還有幾天可以過生日】?
#!/bin/bash
echo -e "計算你還有幾天可以過生日"
read -p "輸入你的生日,格式 MMDD:如0402" day1
# 判斷day1的輸入格式是否正確
day=$( echo ${day1} | grep '[0-9]\{4\}') # 看看是否是4位數字
if [ "${day1}" == "" ]; then
    echo "你輸入的日期有誤"
    exit 1
fi
# 開始計算日期
year=$(date +%Y)
day1="${year}${day}"  # $()加不加雙引號都可以
date_now=$(date +%s)
date_birth=$(date --date="${day1}" +%s)
date_total_s=$((${date_birth}-${date_now}))
if [ "${date_total_s}" -lt "0" ]; then
    year=$((${year}+1))
    day1="${year}${day}"  
    date_now=$(date +%s)
    date_birth=$(date --date="${day1}" +%s)
    date_tital_s=$((${date_birth}-${date_now}))
fi
date_d=$((${date_total_s}/60/60/24))
date_h=$(($((${date_total_s}-${date_d}*60*60*24))/60/60))
echo "你還有${date_d}${date_h}小時過生日"
  1. 讓用戶輸入一個數字,程序可以由1+2+3+…一直累加到用戶輸入的這個數字爲止。
#!/bin/bash
read -p "輸入一個大於0的整數n:" n
# 判斷輸入的是否是數字
num=$(echo ${n} | grep '[0-9]\{1,\}')
if [ "${num}" == "" -o  "${num}" == "0" ]; then
    echo "你輸入的數字有誤"
    exit 1
fi
# 開始計算
s=0
for ((i; i<=${n}; i=i+1))
do
    s=$((${s}+${i}))
done
echo "${n}的累加和爲${s}"

  1. 編寫一個程序,它的作用是:(1)先查看一下 /root/test/logical這個名稱是否存在;(2)若不存在,則建立一個文件,使用touch來建立,建立完成後退出; (3)如果存在的話,判斷該名稱是否爲文件,若爲文件則將之刪除後建立一個名爲logical的目錄之後退出;(4)如果存在,而且該名稱爲目錄,則刪除此目錄
#!/bin/bash
# 前提:/root/test這個目錄一定存在
# read -p "輸入一個待查詢的目錄:" path
path=/root/test/logical

test -e ${path} && res=1 || res=0
if [ "${res}" == "0"  ] ; then
    touch ${path}
    echo "該名稱不存在,已創建同名文件"
    exit 0
fi

test -f ${path} && res=1 || res=0
if [ "${res}" == "1"  ] ; then
    rm ${path}
    mkdir ${path}
    echo "該名稱存在,且爲文件,已被刪除,創建同名目錄"
    exit 0
fi

rmdir ${path}
echo "該名稱存在,且爲目錄,已被刪除"
exit 0

  1. 我們知道/etc/passwd裏面以:來分隔,第一欄爲賬號名稱。請寫一個程序,可以將/etc/passwd的第一欄取出來,而且每一欄都以一行字符串【The 1 account is “root”】來顯示,那個1表示行數。
names=$(cat /etc/passwd | cut  -d ":" -f1)
i=1
for name in ${names}
do
    echo "The ${i} account is ${name}"
    i=$((${i}+1))
done
exit 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章