1.編寫shell指令碼,計算1~100的和。
[root@zl_cloud sbin]# cat 1.sh
#! /bin/bash
sum=0
for i in `seq 1 100`;do
sum=$[$i+$sum]
done
echo $sum
[root@zl_cloud sbin]#
2.編寫shell指令碼,輸入乙個數字n並計算1~n的和。要求:如果輸入的數字小於1,則重新輸入,直到輸入正確的數字為止。
正確答案:
[root@zl_cloud sbin]# vi 2.sh
#! /bin/bash
read -p "please input a num:" n
while ((n<1));do
read -p "輸入數字小於1,請重新輸入:" n
done
for i in `seq 1 $n`;do
sum=$[$i+$n]
done
echo $sum
[root@zl_cloud sbin]#
這是我第一次嘗試的用if語句(後面發現是錯的):
#! /bin/bash
read -p "please input a num:" n
if ((n<1));then
read -p "輸入數字小於1,請重新輸入:" n
else
for i in `seq 1 $n`;do
sum=$[$i+$n]
done
echo $sum
fi
發現大於等於1時是可以計算的,但是到了小於1的數字時,它只會說重新輸入,輸入完就直接退出這個指令碼了,於是我又嘗試了:
#! /bin/bash
read -p "please input a num:" n
if ((n<1));then
read -p "輸入數字小於1,請重新輸入:" n
for i in `seq 1 $n`;do
sum=$[$i+$n]
done
echo $sum
else
for i in `seq 1 $n`;do
sum=$[$i+$n]
done
echo $sum
fi
然後我又試了一下小於1的部分,它提醒我重新輸入,重新輸入後它會空一行,然後退出指令碼。(可能是直接輸出了$sum,但是for沒有計算。最後我就換了while語句,得到答案)
3.編寫shell指令碼,把/root/目錄下的所有目錄(只需要一級)複製到/tmp/目錄下。
[root@zl_cloud sbin]# vi 3.sh
#! /bin/bash
cd /root/
for f in `ls`;do
if [ -d $f ];then
cp -r $f /tmp/
fidone
[root@zl_cloud sbin]#
4.編寫shell指令碼,批量建立使用者user_oo, user_01… user_99。要求:所有使用者同屬於users組。[root@zl_cloud sbin]# vi 4.sh
#! /bin/bash
groupadd users
for i in `seq -w 0 99`;do
useradd -g users user_o$i'
done
[root@zl_cloud sbin]#
[root@zl_cloud sbin]# vi 5.sh
#! /bin/bash
touch /root/shell.txt
touch /root/shell1.txt
awk -f ':' '$0~/abc/ ' /root/test.log > /root/shell.txt
sort -n /root/shell.txt |uniq -c |sort -n > /root/shell1.txt
awk '$1>10 ' /root/shell1.txt
[root@zl_cloud sbin]#
6.編寫shell指令碼,判斷輸入的ip是否正確。要求:ip的規則是n1.n2.n3.n4,其中1[root@zl_cloud sbin]# vi 6.sh
#! /bin/bash
checkip()
\.[0-9]\.[0-9]\.[0-9]$'
then
a=`echo $1 | awk -f '.' ''`
b=`echo $1 | awk -f '.' ''`
c=`echo $1 | awk -f '.' ''`
d=`echo $1 | awk -f '.' ''`
for n in $a $b $c $d;do
if [ $n -ge 255 ] || [ $n -le 0 ];then
echo "the num should less than 255 and greate than 0"
return 2
fidone
else
echo "the ip is wrong,the format is like 192.168.10.129"
return 1
fi}
rs=1
while [ $rs -gt 0 ];do
read -p "please input the ip:" ip
checkip $ip
rs=`echo $?`
done
echo "the ip is right"
[root@zl_cloud sbin]#
程式設計珠璣第十二章習題
1.rand 一般返回約15個隨機位。用該函式實現bigrand 和randint l,u 要求前者至少返回30個隨機位,後者返回 l,u 範圍內的乙個隨機整數。int bigrand int randint int l,int u 2.在0 n 1範圍內選擇m個整數,在該範圍內隨機選擇乙個數i,然...
第十二章 檔案
文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...
第十二章 dp
動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...