文章目录
实验目的
- 掌握条件判断语句,如if语句、case语句。
- 掌握循环控制语句,如for语句、while语句、until语句。
实验内容:
1、编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
要编写一个Shell脚本,用于复制当前目录下所有.c
文件到指定目录,并显示复制后该目录内按文件大小排序的文件清单,可以按照以下步骤操作:
-
打开文本编辑器:首先,打开一个文本编辑器,比如
nano
或vim
。 -
创建脚本文件:创建一个新的脚本文件,例如命名为
copy_and_list.sh
。可以使用以下命令在终端中创建并编辑这个文件:nano copy_and_list.sh
或者
vim copy_and_list.sh
-
编写脚本内容:在打开的编辑器中,输入以下内容:
#!/bin/bash # 指定目标目录 TARGET_DIR="/path/to/destination" # 检查目标目录是否存在,如果不存在则创建 if [ ! -d "$TARGET_DIR" ]; then mkdir -p "$TARGET_DIR" fi # 复制当前目录下的所有*.c文件到目标目录 for file in *.c; do if [ -f "$file" ]; then cp "$file" "$TARGET_DIR" fi done # 显示目标目录内按文件大小排序的文件清单 ls -lSh "$TARGET_DIR" | awk '{print $9 " " $5}'
请将
/path/to/destination
替换为想要复制文件到的目标目录路径。 -
保存并退出编辑器:
- 如果使用的是
nano
,可以按Ctrl + X
,然后按Y
确认保存,最后按Enter
键退出。 - 如果使用的是
vim
,可以按Esc
键,输入:wq
,然后按Enter
键保存并退出。
- 如果使用的是
-
给脚本文件添加执行权限:在终端中,使用
chmod
命令给脚本文件添加执行权限:chmod +x copy_and_list.sh
-
执行脚本:在终端中,运行以下命令来执行脚本:
./copy_and_list.sh
这将复制当前目录下的所有
.c
文件到指定的目标目录,并显示目标目录内按文件大小排序的文件清单。
请注意,这个脚本假设有足够的权限在目标目录中创建文件和目录。如果没有,可能需要使用sudo
命令来执行脚本,或者确保有足够的权限。此外,ls -lSh
命令用于以人类可读的格式显示文件大小,并按大小排序。awk
命令用于提取并显示文件名和大小。
2、使用until语句创建一个Shell程序,其功能为计算1-10的平方。
要使用until
循环语句创建一个Shell程序,用于计算1到10的平方,可以按照以下步骤操作:
-
打开文本编辑器:首先,打开一个文本编辑器,比如
nano
或vim
。 -
创建脚本文件:创建一个新的脚本文件,例如命名为
squares.sh
。你可以使用以下命令在终端中创建并编辑这个文件:nano squares.sh
或者
vim squares.sh
-
编写脚本内容:在打开的编辑器中,输入以下内容:
#!/bin/bash # 初始化变量 num=1 # 使用until循环计算1-10的平方 until [ $num -gt 10 ]; do square=$((num * num)) echo "Square of $num is $square" num=$((num + 1)) done
这个脚本使用
until
循环,条件是num
大于10。在循环体内,计算num
的平方并打印结果,然后num
自增1。 -
保存并退出编辑器:
- 如果你使用的是
nano
,可以按Ctrl + X
,然后按Y
确认保存,最后按Enter
键退出。 - 如果你使用的是
vim
,可以按Esc
键,输入:wq
,然后按Enter
键保存并退出。
- 如果你使用的是
-
给脚本文件添加执行权限:在终端中,使用
chmod
命令给脚本文件添加执行权限:chmod +x squares.sh
-
执行脚本:在终端中,运行以下命令来执行脚本:
./squares.sh
这将输出1到10每个数字的平方。
这个脚本展示了如何使用until
循环来重复执行一系列操作,直到满足某个条件为止。在这个例子中,条件是num
大于10。