Linux shell程序分支语句设计
编写一个shell程序,使用分支语句完成如下功能:输入一个文件名,如果文件名为空则提示输入的文件为空,否则判断 文件是否存在,不存在则显示提示信息,如果文件存在则判断文件是 普通文件还是目录,或是其他文件,给出相应的判断信息
代码展示
#!/bin/bash
read -p "请输入文件名:" filename
if [ -z "$filename" ]; then
echo "输入的文件名为空"
else
if [ ! -e "$filename" ]; then
echo "文件不存在"
else
if [ -f "$filename" ]; then
echo "这是一个普通文件"
elif [ -d "$filename" ]; then
echo "这是一个目录"
else
echo "这是其他类型的文件"
fi
fi
fi
代码解释
用于接受用户输入的文件名,并根据输入的文件名进行一系列判断。以下是对代码的逐行解释:
#!/bin/bash: 这是一个Shebang(#!)行,指定了脚本要使用的解释器,这里是Bash。
read -p "请输入文件名:" filename: 这行代码提示用户输入文件名,并将用户输入的值存储在filename变量中。
if [ -z "$filename" ]; then: 这是一个if语句,判断用户是否输入了文件名。-z选项用于检查变量是否为空。
echo "输入的文件名为空": 如果文件名为空,将输出提示信息。
else: 如果文件名不为空,执行下面的代码块。
if [ ! -e "$filename" ]; then: 这是嵌套的if语句,检查文件是否存在。-e选项用于检查文件是否存在。
echo "文件不存在": 如果文件不存在,将输出提示信息。
else: 如果文件存在,执行下面的代码块。
if [ -f "$filename" ]; then: 这是另一个嵌套的if语句,检查文件是否是普通文件。-f选项用于检查文件是否是普通文件。
echo "这是一个普通文件": 如果是普通文件,输出相应的信息。
elif [ -d "$filename" ]; then: 这是elif语句,检查文件是否是目录。-d选项用于检查文件是否是目录。
echo "这是一个目录": 如果是目录,输出相应的信息。
else: 如果既不是普通文件也不是目录,执行下面的代码块。
echo "这是其他类型的文件": 输出文件为其他类型的信息。
Linux shell程序循环语句设计
编写一个shell程序,使用循环语句完成如下功能: 1创建目录和文件:在/tmp目录创建9个目录名为:dir1, dir2, …, dir9。然后在每个目录下分别新建9个文本文件,文件名为:目录名 _file1,目录名_file2, …,目录名_file9;并设置每个文件的权限如下:文件所有者:rwx;同组用户:r+x;其他用户:r+x
2 等待键盘输入一个数字,范围为1~9,重命名该级目录(假设输入 数字为“5”,则为“dir5”目录)下所有文件的扩展名为bak,并将 该级目录下所有文件名保存到一个文本文件file.txt,然后复制该级 目录到/home 目录
代码展示
#!/bin/bash
# 创建目录和文件
for i in {1..9}; do
mkdir -p /tmp/dir$i
echo "创建目录:/tmp/dir$i"
for j in {1..9}; do
touch /tmp/dir$i/dir${i}_file$j
chmod 775 /tmp/dir$i/dir${i}_file$j
echo "创建文件:/tmp/dir$i/dir${i}_file$j"
done
done
# 等待键盘输入一个数字
read -p "请输入一个数字(1~9):" num
if [ $num -ge 1 ] && [ $num -le 9 ]; then
# 重命名文件扩展名为bak
for file in /tmp/dir$num/*; do
mv "$file" "${file%.*}.bak"
done
# 将文件名保存到file.txt
ls /tmp/dir$num > /tmp/dir$num/file.txt
# 创建my_directory目录(如果不存在),并复制目录到该目录下
mkdir -p ~/my_directory
cp -r /tmp/dir$num ~/my_directory
else
echo "输入的数字不在1~9范围内"
fi