Bash 基础知识系列 #3:传递参数和接受用户输入 | Linux 中国_百度知 ...
发布网友
发布时间:2024-10-02 16:18
我来回答
共1个回答
热心网友
时间:2024-10-09 20:22
Bash 基础知识系列 #3:传递参数与用户交互
(本文字数:约1400字,阅读时长大约:4分钟)
让 Bash 脚本具备动态性和交互性,是编程艺术的一大步。在本章,我们将深入探讨如何向脚本传递参数,以及如何接收用户的输入,让程序更加灵活和实用。
传递参数到 Shell 脚本是提升其功能的关键。当你运行脚本时,只需在命令行后添加变量,如:
```bash
./my_script.sh var1 var2
```
在脚本内部,参数被识别为 $1、$2 等,比如:
```bash
#!/bin/bash
echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"
```
特别地,$0 代表脚本的名称,而后续参数则分别存储在相应的编号变量中,如 ${10}、${11}...,最多支持 255 个参数。然而,对于超过10个的参数,建议使用花括号来引用。
接下来,让我们通过一个实际案例来感受参数传递的力量。创建一个名为 arguments.sh</ 的脚本,增加对参数数量的检测:
```bash
#!/bin/bash
echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"
echo "Total number of arguments: $#"
```
当参数不匹配时,脚本会优雅地处理,而不会中断执行。例如,少提供或多提供参数,脚本会按照已有的逻辑处理,只是没有额外的参数信息。
提升脚本的交互性,让其与用户直接对话,read</ 命令是你的得力助手。下面的 interactive.sh</ 脚本示例就展示了如何接收用户的输入:
```bash
#!/bin/bash
echo "What is your name, stranger?"
read name
echo "What's your full name, $name?"
read -p "Enter something? " full_name
echo "Welcome, $full_name"
```
现在,你已经掌握了基础,是时候挑战自我了!尝试完成以下练习,将所学运用到实际场景中:
练习 1:</编写一个脚本,接受三个参数并以逆序显示它们,如:`./reverse.sh ubuntu fedora arch` 应输出 `arch fedora ubuntu`。
练习 2:</编写一个脚本,显示传递给它的参数数量,使用 $# 特殊变量,如:`./arguments.sh one two three` 应输出 `Total number of arguments: 3`。
练习 3:</编写一个脚本,接收文件名作为参数,并显示其行数,利用 wc 命令,如:`./count_lines file.txt` 应显示文件的行数。
掌握这些技巧后,你的 Bash 编程能力将更上一层楼。继续探索,我们会在后续章节中深入探讨 Bash 的数学运算。让交互性和功能性相辅相成,让每一个脚本都成为你与机器交流的艺术品。