当前位置: 首页 > news >正文

第二十七章 位置参数

第二十七章 位置参数

其它编程语言都能够接受命令行选项和参数,Shell也拥有此项特征。

访问命令行

Shell提供了一组名为位置参数(positional parameters)的变量,其中包含了命令行上的各个单词。这些变量按照0~9分别命名,可以通过下列方式显示:

#!/bin/bash#posit-param: 查看命令行参数的脚本echo "
\$0 = $0
\$1 = $1
\$2 = $2
\$3 = $3
\$4 = $4
\$5 = $5
\$6 = $7
\$8 = $8
\$9 = $9
"

运行结果如下:

在这里插入图片描述


确定参数个数

Shell还提供了变量$#,其中包含了命令行中的参数的个数:

#!/bin/bash# posit-param:查看命令行参数的脚本echo "
Number of arguments: $#
\$0 = $0
\$1 = $1
\$2 = $2
\$3 = $3
\$4 = $4
\$5 = $5
\$6 = $7
\$8 = $8
\$9 = $9
"

运行结果如下:

在这里插入图片描述


shift-访问多个参数

上个例子中输入的参数超过了空间参数的个数,因此有些参数并未显示,Shell提供的Shift命令可以解决此问题。每执行一次shift命令,就将所有的参数"左移一个位置"。通过shif命令,可以自始自终和一个参数打交道(除了$0):

#!/bin/bash#posit-param2: 脚本显示所有参数count=1while [[ $# -gt 0 ]]; doecho "Argument $count = $1"count=$((count + 1))shift
done

运行结果如下:

在这里插入图片描述

Shell的位置参数也可以用于Shell函数。

批量处理位置参数

有时候批量处理所有位置参数更为实用。Shell提供了两个特殊参数*和@,两者均可扩展成完整的位置参数列表,。

特殊参数*和@

参数描述
$*扩展成从1开始的位置参数列表。如果它出现在双引号内部,则扩展成由双引号引用的字符串,其中包含了所有的位置参数,彼此之间以Shell变量IFS的第一个字符分割符(默认是空格符)
$@扩展成从1开始的位置参数列表。如果它出现在双引号内部,则将每个位置参数扩展成独立的单词

例如:

#!/bin/bash#posit-params3:演示$*和$@的脚本print_params () {echo "\$1 = $1"echo "\$2 = $2"ehco "\$3 = $3"echo "\$4 = $4"
}pass_params () {echo -e "\n" '$* :'; print_params $*echo -e "\n" '"$*" :'; print_params "$*"echo -e "\n" '$@ :'; print_params $@echo -e "\n" '"$@" :'; print_params "$@"
}pass_params "word" "words with spaces"

运行结果如下:

在这里插入图片描述

∗ 和 *和 @生成了4个单词:


word words with spaces



"$*"生成了一个单词:


“word words with spaces”


"$@"生成了2个单词:


“word” “words with spaces”


Shell提供了4种获取位置参数列表的不同方法中,到目前为止, ”$@"适用大部分情况,因为其保留了每个位置参数的整体性。为了保证安全性,应该坚持使用这种方法。

相关文章:

  • Pinocchio 库详解及其在足式机器人上的应用
  • FPGA静态功耗
  • 【FPGA开发】DDS信号发生器设计
  • 【动态规划】子序列问题(二)
  • Python安装使用教程
  • 国家奖学金答辩PPT+文稿
  • 第三章 内存
  • AUTOSAR实战教程--DoIP_01_配置项解释
  • 在VSCode中使用Ultralytics扩展
  • vscode 配置 latex
  • 港理工:LLM推理与推荐能力集成
  • 机器学习 [白板推导](四)[降维]
  • 计数排序_桶排序
  • hot100 -- 10.回溯系列
  • 电流舵DAC设计(二)
  • Vue-Leaflet地图组件开发(三)地图控件与高级样式设计
  • Python学习——排序
  • Java严格模式withResolverStyle解析日期错误及解决方案
  • AI架构师修炼之道
  • 深入解析Java21核心新特性(虚拟线程,分代 ZGC,记录模式模式匹配增强)
  • dw外部网站链接怎么做/看到招聘游戏推广员千万别去
  • 网站限时抢购怎么做/一个完整的营销策划案范文
  • 最新手机网站推荐/网络推广方法怎么做
  • 衡水seo_衡水网站建设-燕丰收/免费seo免费培训
  • 网站怎么推广效果最好/百度风云榜排行榜
  • 商业网站开发实训心得体会范文/chrome官网