国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux-03shell語(yǔ)法復(fù)習(xí)與習(xí)題

這篇具有很好參考價(jià)值的文章主要介紹了Linux-03shell語(yǔ)法復(fù)習(xí)與習(xí)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

習(xí)題要求


創(chuàng)建好作業(yè)后,先進(jìn)入文件夾/home/acs/homework/lesson_3/,然后:

(0) 進(jìn)入homework_0文件夾,編寫(xiě)自動(dòng)完成lesson_1作業(yè)的腳本helper.sh。要求:
    [1] 當(dāng)前目錄下僅包含helper.sh
    [2] helper.sh具有可執(zhí)行權(quán)限
    [3] 在任意路徑依次執(zhí)行下列命令后,lesson_1的作業(yè)可以得到滿(mǎn)分:
        1) homework 1 create
        2) /home/acs/homework/lesson_3/homework_0/helper.sh

(1) 進(jìn)入homework_1文件夾,編寫(xiě)腳本check_file.sh。要求:
    [1] 當(dāng)前目錄下僅包含check_file.sh。
    [2] check_file.sh具有可執(zhí)行權(quán)限。
    [3] check_file.sh接收一個(gè)傳入?yún)?shù)。格式為 ./check_file.sh file
    [4] 判斷傳遞參數(shù),分別在標(biāo)準(zhǔn)輸出中輸出如下內(nèi)容(不包括雙引號(hào)):
        1) 如果傳入?yún)?shù)個(gè)數(shù)不是1,則輸出一行:"arguments not valid",然后退出,退出狀態(tài)等于1。
        2) 如果file文件不存在,則輸出一行:"not exist",然后退出,退出狀態(tài)等于2。
        3) 如果file文件存在,則輸出分別進(jìn)行如下5個(gè)判斷,然后退出,退出狀態(tài)等于0。
            1] 如果file為普通文件,則輸出一行:"regular file"
            2] 如果file為目錄(文件夾),則輸出一行:"directory"
            3] 如果file具有可讀權(quán)限,則輸出一行:"readable"
            4] 如果file具有可寫(xiě)權(quán)限,則輸出一行:"writable"
            5] 如果file具有可執(zhí)行權(quán)限,則輸出一行:"executable"

(2) 進(jìn)入homework_2文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] 該文件從stdin(標(biāo)準(zhǔn)輸入)中讀取一個(gè)整數(shù)n
    [4] 在stdout(標(biāo)準(zhǔn)輸出)輸出斐波那契數(shù)列的第n項(xiàng)。即:a[0] = 1, a[1] = 1, a[i] = a[i - 1] + a[i - 2], 求a[n]。
    [5] 數(shù)據(jù)保證 0 <= n <= 20,腳本不需要判斷n的合法性。

(3) 進(jìn)入homework_3文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] 該文件從stdin(標(biāo)準(zhǔn)輸入)中讀取兩行整數(shù)n和m
    [4] 在stdout(標(biāo)準(zhǔn)輸出)中輸出1~n的按字典序從小到大的順序數(shù)第m個(gè)全排列,輸出一行,用空格隔開(kāi)所有數(shù),行末可以有多余空格。
    [5] 數(shù)據(jù)保證 1 <= n <= 10, 1 <= m <= min(100, n!),腳本不需要判斷數(shù)據(jù)的合法性。

(4) 進(jìn)入homework_4文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] main.sh接收兩個(gè)傳入?yún)?shù)。格式為 ./main.sh input_file output_file
    [4] 從input_file中讀取一個(gè)正整數(shù)n,然后將前n個(gè)正整數(shù)的平方和寫(xiě)入output_file中
    [5] 數(shù)據(jù)保證 1 <= n <= 100,腳本不需要判斷所有數(shù)據(jù)的合法性。

第零題


創(chuàng)建好作業(yè)后,先進(jìn)入文件夾/home/acs/homework/lesson_3/,然后:

(0) 進(jìn)入homework_0文件夾,編寫(xiě)自動(dòng)完成lesson_1作業(yè)的腳本helper.sh。要求:
    [1] 當(dāng)前目錄下僅包含helper.sh
    [2] helper.sh具有可執(zhí)行權(quán)限
    [3] 在任意路徑依次執(zhí)行下列命令后,lesson_1的作業(yè)可以得到滿(mǎn)分:
        1) homework 1 create
        2) /home/acs/homework/lesson_3/homework_0/helper.sh

homework 3 create
cd /home/acs/homework/lesson_3/homework_0
ls -a
vim helper.sh :wq
ls -l helper.sh
chmod +x helper.sh
vim helper.sh

# helper.sh內(nèi)容如下:
#! /bin/bash
# 不能加空格
homework1_dir=/home/acs/homework/lesson_1/homework_

homework 1 create 0
# ${}是變量替換,$()是返回stdout
cd ${homework1_dir}0
for i in dir_a dir_b dir_c
do
	mkdir $i
done

homework 1 create 1
cd ${homework1_dir}1
for i in a.txt b.txt c.txt
do
	cp $i ${i}.bak
done

homework 1 create 2
cd ${homework1_dir}2
for i in a b c
do
	mv ${i}.txt ${i}_new.txt
done

homework 1 create 3
cd ${homework1_dir}3
for i in a.txt b.txt c.txt
do
	mv dir_a/${i} dir_b
done

homework 1 create 4
cd ${homework1_dir}4
for i in a.txt b.txt c.txt
do
	rm ${i}
done

homework 1 create 5
cd ${homework1_dir}5
for i in dir_a dir_b dir_c
do
#	echo $(pwd)/${i}
	rm ${i} -r
done

homework 1 create 6
cd ${homework1_dir}6
# done是關(guān)鍵字要使用雙引號(hào),否則會(huì)找do去匹配
# mv task.txt dir_a/done.txt
mkdir dir_a
mv task.txt "dir_a/done.txt"

homework 1 create 7
cd ${homework1_dir}7
for ((i=0;i<3;i++))
do
	mkdir dir_${i}
#	for ((j=0;j<3;j++))
#	do
#		# 會(huì)操作3x3x3條
#		cp a.txt dir_${i}/a${j}.txt
#		cp b.txt dir_${i}/b${j}.txt
#		cp c.txt dir_${i}/c${j}.txt
#	done
	for j in a b c
	do
		cp ${j}.txt dir_${i}/${j}${i}.txt
	done
done

homework 1 create 8
cd ${homework1_dir}8
rm dir_a/a.txt
mv dir_b/b.txt dir_b/b_new.txt
cp dir_c/c.txt dir_c/c.txt.bak

homework 1 create 9
cd ${homework1_dir}9
rm *.txt

# 每次執(zhí)行完之后調(diào)用一下
# homework 1 test
# helper.sh內(nèi)容結(jié)束

# 注意事項(xiàng)
1. 開(kāi)頭的 `#! /bin/bash` 如果不加的話(huà)會(huì)導(dǎo)致for循環(huán)報(bào)錯(cuò)
2. 要保證目錄里只有一個(gè)文件:關(guān)掉vim
3. 粘貼時(shí)要開(kāi)啟粘貼模式隱藏行號(hào) :set paste :set nonu

# 如何將服務(wù)器中的文件整體復(fù)制出來(lái)
1. 退出tmux
2. `cat filename`:展示filename的文件內(nèi)容
3. 鼠標(biāo)選中文本開(kāi)頭的若干字符
4. 用滾輪滑到文件結(jié)尾
5. 按住Shift,同時(shí)鼠標(biāo)點(diǎn)擊文件結(jié)尾,此時(shí)會(huì)選中文件所有內(nèi)容
6. Windows/Linux下,按Ctrl + insert可以復(fù)制全文;Mac下,按Command + c可以復(fù)制全文。

第一題


(1) 進(jìn)入homework_1文件夾,編寫(xiě)腳本check_file.sh。要求:
    [1] 當(dāng)前目錄下僅包含check_file.sh。
    [2] check_file.sh具有可執(zhí)行權(quán)限。
    [3] check_file.sh接收一個(gè)傳入?yún)?shù)。格式為 ./check_file.sh file
    [4] 判斷傳遞參數(shù),分別在標(biāo)準(zhǔn)輸出中輸出如下內(nèi)容(不包括雙引號(hào)):
        1) 如果傳入?yún)?shù)個(gè)數(shù)不是1,則輸出一行:"arguments not valid",然后退出,退出狀態(tài)等于1。
        2) 如果file文件不存在,則輸出一行:"not exist",然后退出,退出狀態(tài)等于2。
        3) 如果file文件存在,則輸出分別進(jìn)行如下5個(gè)判斷,然后退出,退出狀態(tài)等于0。
            1] 如果file為普通文件,則輸出一行:"regular file"
            2] 如果file為目錄(文件夾),則輸出一行:"directory"
            3] 如果file具有可讀權(quán)限,則輸出一行:"readable"
            4] 如果file具有可寫(xiě)權(quán)限,則輸出一行:"writable"
            5] 如果file具有可執(zhí)行權(quán)限,則輸出一行:"executable"

cd /home/acs/homework/lesson_3/homework_1
ls -a
vim check_file.sh :wq
ls -l check_file.sh
chmod +x check_file.sh
vim check_file.sh
# ./check_file.sh file

#! /bin/bash

if [ $# -ne 1]
then
	echo arguments not valid
	exit 1
fi

# 中間帶空格的字符串要加雙引號(hào)
if [ ! -e "$i" ]
then
	echo not exist
	exit 2
fi

if [ -f "$1" ]
then
	echo regular file
	#exit 0 # 默認(rèn)就是返回0,不寫(xiě)也行
fi

if [ -d "$1" ]
then
	echo directory
fi

if [ -r "$1" ]
then
	echo readable
fi

if [ -w "$1" ]
then
	echo writable
fi

if [ -x "$1" ]
then
	echo executable
fi

第二題


(2) 進(jìn)入homework_2文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] 該文件從stdin(標(biāo)準(zhǔn)輸入)中讀取一個(gè)整數(shù)n
    [4] 在stdout(標(biāo)準(zhǔn)輸出)輸出斐波那契數(shù)列的第n項(xiàng)。即:a[0] = 1, a[1] = 1, a[i] = a[i - 1] + a[i - 2], 求a[n]。
    [5] 數(shù)據(jù)保證 0 <= n <= 20,腳本不需要判斷n的合法性。

cd /home/acs/homework/lesson_3/homework_2
ls -a
vim main.sh :wq
ls -l main.sh
chmod +x main.sh
vim main.sh

#! /bin/bash

read n
# 等號(hào)兩邊不能加空格
a[0]=1
a[1]=1

for ((i=2;i<=n;i++))
do
	x=$(expr &i - 1) # x = a[i-1]
	y=$(expr &i - 2)
	a[$i]=$(expr ${a[$x]} + ${a[$y]}) # a[i] = a[i-1] + a[i-2]
done

echo ${a[$n]}

第三題


(3) 進(jìn)入homework_3文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] 該文件從stdin(標(biāo)準(zhǔn)輸入)中讀取兩行整數(shù)n和m
    [4] 在stdout(標(biāo)準(zhǔn)輸出)中輸出1~n的按字典序從小到大的順序數(shù)第m個(gè)全排列,輸出一行,用空格隔開(kāi)所有數(shù),行末可以有多余空格。
    [5] 數(shù)據(jù)保證 1 <= n <= 10, 1 <= m <= min(100, n!),腳本不需要判斷數(shù)據(jù)的合法性。

cd /home/acs/homework/lesson_3/homework_3
ls -a
vim main.sh :wq
ls -l main.sh
chmod +x main.sh

# 先用c++進(jìn)行編寫(xiě)
#include<iostream>
using namespace std;
const int N = 110;

int n,m;	// n個(gè)數(shù)找第m個(gè)全排列
int path[N];	// 路徑數(shù)組
bool st[N];	// 狀態(tài)數(shù)組,看第i個(gè)數(shù)是否被用過(guò)

bool dfs(int u){
	if(u==n){
		m--;
		if(!m){
			for(int i=0;i<n;i++)
				cout << path[i] << '';
			cout << endl;
			return true;
		}
		return false;
	}
	for(int i=1;i<=n;i++){
		if(!st[i]){
			path[u] = i;
			st[i] = true;
			if(dfs(u+1))
				return true;
			// 恢復(fù)現(xiàn)場(chǎng)
			st[i] = false;
		}
	}
	return false;
}

int main(){
	cin >> n >> m;
	dfs(0);	//從第0位開(kāi)始
	return 0;
}

vim main.sh

#! /bin/bash

read n
read m

# 初始化數(shù)組
for((i=1;i<=n;i++))
do
	st[$i]=0 # 0表示false
done

# dfs流程
dfs(){
	if [ $1 -eq $n ]
	then
		m=`expr $m - 1`
		if [ $m -eq 0 ]
		then
			echo ${path[@]}
			return 0 # 正常結(jié)束
		fi
		return 1
	fi
	
	local j=0 # 其他層遞歸的dfs會(huì)改變?cè)瓉?lái)循環(huán)中的j
	for((j=1;j<=n;j++))
	do
		if [ ${st[$j]} -eq 0 ]
		then
			path[$1]=$j
			st[$j]=1
			
			if dfs `expr $1 + 1`
			then
				return 0
			fi
			
			st[$j]=0
		fi
	done
	
	return 1
}

# 執(zhí)行dfs,從第0位開(kāi)始
dfs 0

第四題


(4) 進(jìn)入homework_4文件夾,編寫(xiě)腳本main.sh。要求:
    [1] 當(dāng)前目錄下僅包含main.sh
    [2] main.sh具有可執(zhí)行權(quán)限
    [3] main.sh接收兩個(gè)傳入?yún)?shù)。格式為 ./main.sh input_file output_file
    [4] 從input_file中讀取一個(gè)正整數(shù)n,然后將前n個(gè)正整數(shù)的平方和寫(xiě)入output_file中
    [5] 數(shù)據(jù)保證 1 <= n <= 100,腳本不需要判斷所有數(shù)據(jù)的合法性。

cd /home/acs/homework/lesson_3/homework_4
ls -a
vim main.sh :wq
ls -l main.sh
chmod +x main.sh

input_file=$1
output_file=$2

read n < $input_file

sum = 0

for ((i=1;i<=n;i++))
do
	sqr=`expr $i \* $i`
	sum=`expr $sum + $sqr`
done

echo $sum > $output_file

echo 10 > input.txt
./main.sh input.txt output.txt

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760519.html

到了這里,關(guān)于Linux-03shell語(yǔ)法復(fù)習(xí)與習(xí)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • linux shell操作- 03 用戶(hù)切換及shell案例

    linux是多用戶(hù)的、多進(jìn)程的操作系統(tǒng),通常多個(gè)用戶(hù)之間需要來(lái)回切換; su,switch user 命令 參數(shù) - , 切換用戶(hù),同時(shí)切換工作目錄(為目標(biāo)用戶(hù)的家目錄) 參數(shù) -c cmd,切換到目標(biāo)用戶(hù),執(zhí)行一條指令,然后切回原用戶(hù); 參數(shù) -m -p ,保持原用戶(hù)的環(huán)境變量; 參數(shù) -l,重新登

    2024年02月06日
    瀏覽(19)
  • Shell語(yǔ)法揭秘:深入探討常見(jiàn)Linux Shell之間的語(yǔ)法轉(zhuǎn)換

    Shell語(yǔ)法揭秘:深入探討常見(jiàn)Linux Shell之間的語(yǔ)法轉(zhuǎn)換

    博主簡(jiǎn)介 ??一個(gè)熱愛(ài)分享高性能服務(wù)器后臺(tái)開(kāi)發(fā)知識(shí)的博主,目標(biāo)是通過(guò)理論與代碼實(shí)踐的結(jié)合,讓世界上看似難以掌握的技術(shù)變得易于理解與掌握。技能涵蓋了多個(gè)領(lǐng)域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、協(xié)程、DPDK等。 ?? ??? CSDN實(shí)力新星、

    2024年02月11日
    瀏覽(14)
  • Linux網(wǎng)絡(luò)操作系統(tǒng)期末系統(tǒng)復(fù)習(xí)題

    一 、填空題 1. GUN 的含義是 一個(gè)自由的操作系統(tǒng) 。 2. Linux 一般有 3 個(gè)主要部分: 內(nèi)核 、 命令解釋層 、 實(shí)用工具 ?。 3. 目前被稱(chēng)為純種的UNIX指的就是 System V 以及 BSD 這兩套操作系統(tǒng) 。 4. Linux是基于 Copyleft 的軟件模式進(jìn)行發(fā)布的,它是GNU項(xiàng)目制定的通用公共許可證,英文

    2023年04月23日
    瀏覽(29)
  • Linux編程基礎(chǔ):第4章Shell編程 課后習(xí)題

    《Linux編程基礎(chǔ)》黑馬程序員/編著?清華大學(xué)出版社 目錄 一、填空題 二、判斷題 三、單選題 四、簡(jiǎn)答題 1、分析以下腳本代碼: 2、寫(xiě)出shell腳本中while循環(huán)與until循環(huán)的基本格式,并簡(jiǎn)述這兩種循環(huán)結(jié)構(gòu)的區(qū)別。 五、編程題 1、編寫(xiě)shell腳本實(shí)現(xiàn)如下菜單界面: 2、編寫(xiě)she

    2024年02月07日
    瀏覽(21)
  • linux筆記shell腳本基礎(chǔ)語(yǔ)法

    vim aaa.sh 輸入以下內(nèi)容,按esc退出 輸入:wq保存 輸入chmod 777 aaa.sh賦權(quán)限 輸入./aaa執(zhí)行看效果 #! 是一個(gè)約定的標(biāo)記,它告訴系統(tǒng)這個(gè)腳本需要什么解釋器來(lái)執(zhí)行,即使用哪一種 Shell。 echo 命令用于向窗口輸出文本。 echo 命令 -e 代表開(kāi)啟換行,如果有n就會(huì)換行。c代表關(guān)閉換行

    2024年02月07日
    瀏覽(25)
  • 【Linux編程Shell自動(dòng)化腳本】03 shell四劍客(find、sed、grep、awk)

    語(yǔ)法格式 參數(shù)說(shuō)明 : path 是要查找的目錄路徑,可以是一個(gè)目錄或文件名,也可以是多個(gè)路徑,多個(gè)路徑之間用空格分隔,如果未指定路徑,則默認(rèn)為當(dāng)前目錄。 expression 是可選參數(shù),用于指定查找的條件,可以是文件名、文件類(lèi)型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    瀏覽(28)
  • Linux shell練習(xí)題——grep、|、ln、chmod、vim

    1. 打開(kāi)終端窗?, 使? pwd 命令查看??所在?錄. 2. 使? cd 命令通過(guò)相對(duì)路徑切換到根(/)?錄 3. 使? cd - 切換到上次所在的?錄 4. 使? ls 命令以列表的形式查看當(dāng)前?錄下所有的?件(包括隱藏?件),并將輸出結(jié)果重定向到桌?的 my.txt ?件中. 5. 在當(dāng)前?錄中使? cat 命令

    2024年02月11日
    瀏覽(48)
  • 【Linux】shell腳本: 基本語(yǔ)法 和 高級(jí)特性

    【Linux】shell腳本: 基本語(yǔ)法 和 高級(jí)特性

    Shell腳本是一種用Shell語(yǔ)言編寫(xiě)的程序,它可以實(shí)現(xiàn)自動(dòng)化的任務(wù),如批量處理文件、監(jiān)控系統(tǒng)狀態(tài)、定時(shí)備份等。本文包括: Shell腳本的定義和作用:介紹什么是Shell腳本,它有哪些優(yōu)點(diǎn)和缺點(diǎn),它可以用來(lái)做什么。 Shell腳本的基本語(yǔ)法:介紹Shell腳本的結(jié)構(gòu)、變量、運(yùn)算符

    2024年02月12日
    瀏覽(26)
  • Linux shell練習(xí)題——cd、ls、mkdir、mv、rm

    1. 使? cd 切換到桌? 2. 使? touch 在桌?創(chuàng)建 a.txt b.txt c.txt 三個(gè)?件 3. 使? mkdir 在桌?創(chuàng)建 hello ?錄. 4. 使? mv命令 b.txt c.txt 兩個(gè)?件移動(dòng)到 hello ?錄下 5. 雙擊打開(kāi) a.txt, 在?件中填寫(xiě)內(nèi)容 hello world. 6. 使? cp 命令拷? a.txt 到 abc.txt 中. 7. 使? tree 查看下當(dāng)前?錄的?錄

    2024年02月11日
    瀏覽(22)
  • JavaScript復(fù)習(xí)——03 函數(shù)

    函數(shù)在JS中也是一個(gè)對(duì)象,它具有其它對(duì)象的所有功能,函數(shù)中可以存儲(chǔ)代碼,且可以在需要的時(shí)候調(diào)用這些代碼 函數(shù)聲明 函數(shù)表達(dá)式 箭頭函數(shù) 函數(shù)的類(lèi)型 參數(shù) : 如果實(shí)參和形參相同,那么對(duì)應(yīng)的實(shí)參會(huì)賦值給形參 如果實(shí)參多于形參,則多余的實(shí)參不會(huì)使用 如果形參多于

    2024年02月06日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包