当前位置: 首页 > 科技观察

Bash入门系列之三:给bash脚本传递参数

时间:2023-03-12 16:58:07 科技观察

在上一篇文章中,我们介绍了如何在bash脚本中使用变量来响应各种数据和接收用户输入。今天我们将介绍如何通过命令行将变量作为参数传递给bash脚本。给bash传递参数下面的脚本count_lines.sh会输出用户指定文件的总行数:#!/bin/bashecho-n"请输入文件名:"readnlines=$(wc-l<$filename)echo"Thereareare$nlineslinesin$filename"例如,用户可以输入文件/etc/passwd,脚本会输出行数:脚本运行良好;但是,还有进一步优化的空间。我们可以让用户在运行脚本时简单地将文件名作为命令行参数传递,而不是提示用户输入文件名,如下所示:./count_lines.sh/etc/passwd第一个bash参数(也称为location参数)可以使用$1在bash脚本中访问。所以在count_lines.sh中,filename变量可以用$1代替,如下:#!/bin/bashnlines=$(wc-l上面脚本中的/dev/null是指将错误信息重定向到/dev/null,即不打印错误信息。可以参考:Linux中如何将输出和错误重定向到/dev/nullbashshell中的特殊变量bash中内置了很多特殊变量,使用起来非常方便。以下是最常见的:变量描述$0bash脚本名称$1,$2...$nbash脚本参数$$当前shell进程ID$#传递给脚本的参数总数$@传递给脚本的所有参数的值$?最后执行命令的退出状态$!最后执行的命令的进程ID。您实际上可以检查这些特殊变量。参考下面的variables.sh脚本:#!/bin/bashecho"脚本名称:$0"echo"参数总数:$#"echo"所有参数的值:$@"然后运行带有几个参数的脚本: