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语句块。 - 语法:
if [ condition ]; then# 如果条件为真,执行这里的代码 elif [ another_condition ]; then# 如果另一个条件为真,执行这里的代码 else# 如果所有条件都不为真,执行这里的代码 fi
-;;
- 用途:
;;用于结束case语句中的一个分支。 - 语法:
case $variable inpattern1)# 如果变量匹配 pattern1,执行这里的代码;;pattern2)# 如果变量匹配 pattern2,执行这里的代码;;*)# 如果变量不匹配任何模式,执行这里的代码;; esac
-esac
- 用途:
esac用于结束case语句快。 - 语法:
case $variable inpattern1)# 如果变量匹配 pattern1,执行这里的代码;;pattern2)# 如果变量匹配 pattern2,执行这里的代码;;*)# 如果变量不匹配任何模式,执行这里的代码;; esac
-
case语句:case $1 in-a)# 添加书籍...;;-d)# 删除书籍...;;-s)# 搜索书籍...;;*)# 错误参数usage;; esaccase语句根据$1的值进行分支处理。- 每个分支以
;;结束。 esac结束了整个case语句。
-
嵌套的
if语句:if grep -q "^$BOOK_ID:" "$BOOK_FILE"; then... else... fi- 这些
if语句用于检查书号是否存在,并根据结果执行不同的操作。 - 每个
if语句块以fi结束。
- 这些