0
0 是脚本的名称,# 是传入的参数数量,1 是第一个参数,BOOK_ID 是变量BOOK_ID的内容
1
-echo用于在命令窗口输出信息
-$():是命令替换的语法。$(...) 会执行括号内的命令,并将其输出捕获为一个字符串,然后赋值给变量。
-|:管道符 | 用于将前一个命令的输出作为下一个命令的输入。
-cut 命令用于从每一行中剪切出指定的字段。
eg.cut -d':' -f1:
-d':'指定了字段的分隔符为冒号:。-f1表示提取第一个字段。- 整一行表示按:裁减,并取第一个字段
eg.假设 BOOK_INFO 的值为 2001:Python编程:张三:计算机科学,那么BOOK_ID=$(echo $BOOK_INFO | cut -d':' -f1) 的值为 2001。
-grep 命令用于在文件中搜索匹配指定模式的行。
- -q:静默模式,不输出任何内容,只返回状态码。如果找到匹配项,返回 0(真),否则返回 1(假)。可作为条件语句的判断信息。
-read命令用于从标准输入读取一行,并将输入的内容存储在一个或多个变量中。
- -p 选项允许你在提示用户输入时显示一条消息。这条消息会出现在同一行上,等待用户输入。
eg.read -p "确认要删除书号为 $BOOK_ID 的书籍吗?(y/n): " CONFIRM
-sed 是一个流编辑器,用于对文件进行文本转换。
-i选项表示直接在文件中进行修改。"/^$BOOK_ID:/d"是一个sed命令,用于删除文件中以指定书号开头的行。^$BOOK_ID:匹配以书号开头的行。d表示删除匹配的行。
2
在 Bash 脚本中,fi 和 ;; 都是用于结束特定结构的关键字。它们分别用于结束 if 语句和 case 语句中的分支。
-fi
-
用途 :
fi用于结束一个if语句块。 -
语法 :
bashif [ condition ]; then # 如果条件为真,执行这里的代码 elif [ another_condition ]; then # 如果另一个条件为真,执行这里的代码 else # 如果所有条件都不为真,执行这里的代码 fi
-;;
-
用途 :
;;用于结束case语句中的一个分支。 -
语法 :
bashcase $variable in pattern1) # 如果变量匹配 pattern1,执行这里的代码 ;; pattern2) # 如果变量匹配 pattern2,执行这里的代码 ;; *) # 如果变量不匹配任何模式,执行这里的代码 ;; esac
-esac
-
用途 :
esac用于结束case语句快。 -
语法 :
bashcase $variable in pattern1) # 如果变量匹配 pattern1,执行这里的代码 ;; pattern2) # 如果变量匹配 pattern2,执行这里的代码 ;; *) # 如果变量不匹配任何模式,执行这里的代码 ;; esac
-
case语句:bashcase $1 in -a) # 添加书籍 ... ;; -d) # 删除书籍 ... ;; -s) # 搜索书籍 ... ;; *) # 错误参数 usage ;; esaccase语句根据$1的值进行分支处理。- 每个分支以
;;结束。 esac结束了整个case语句。
-
嵌套的
if语句:bashif grep -q "^$BOOK_ID:" "$BOOK_FILE"; then ... else ... fi- 这些
if语句用于检查书号是否存在,并根据结果执行不同的操作。 - 每个
if语句块以fi结束。
- 这些