iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Shell中$0, $#, $*, $@, $?, $$和命令行参数怎么使用
  • 587
分享到

Shell中$0, $#, $*, $@, $?, $$和命令行参数怎么使用

2023-06-09 12:06:40 587人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关shell中$0, $#, $*, $@, $?, $和命令行参数怎么使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。特殊变量列表变量含义$0当前脚本的文件名$n传递给

这期内容当中小编将会给大家带来有关shell中$0, $#, $*, $@, $?, $和命令行参数怎么使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

特殊变量列表

变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

命令行参数

运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。

请看下面的脚本:

#!/bin/bashecho "File Name: $0"echo "First Parameter : $1"echo "First Parameter : $2"echo "Quoted Values: $@"echo "Quoted Values: $*"echo "Total Number of Parameters : $#"

运行结果:

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

$* 和 $@ 的区别

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

下面的例子可以清楚的看到 $* 和 $@ 的区别:

#!/bin/bashecho "\$*=" $*echo "\"\$*\"=" "$*"echo "\$@=" $@echo "\"\$@\"=" "$@"echo "print each param from \$*"for var in $*doecho "$var"doneecho "print each param from \$@"for var in $@doecho "$var"doneecho "print each param from \"\$*\""for var in "$*"doecho "$var"doneecho "print each param from \"\$@\""for var in "$@"doecho "$var"done

执行 ./test.sh "a" "b" "c" "d",看到下面的结果:

$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d

退出状态

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。

退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

不过,也有一些命令返回其他值,表示不同类型的错误。

下面例子中,命令成功执行:

$./test.sh Zara AliFile Name : ./test.shFirst Parameter : ZaraSecond Parameter : AliQuoted Values: Zara AliQuoted Values: Zara AliTotal Number of Parameters : 2$echo $?0

介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。

假设定义了一个变量为:

代码如下:

file=/dir1/dir2/dir3/my.file.txt

可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 .  及其左边的字符串:file.txt
${file##*.}:删掉最后一个 .  及其左边的字符串:txt
${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)
${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:

# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path2/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path2/path3/path4/my.file.txt

执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;

一个shell中的系统环境变量怎样才会被复制到子shell中(用export定义的变量);

一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。

不用export定义的变量只对该shell有效,对子shell是无效的。

-d :判断制定的是否为目录
-z:判断制定的变量是否存在值
-f:判断制定的是否为文件
-L:判断制定的是否为符号链接
-r:判断制定的是否可读
-s:判断存在的对象长度是否为0
-w:判断制定的是否可写
-x:判断存在的对象是否可以执行
!:测试条件的否定符号
这些文件操作很多时候给脚本编程带来方便,尤其是用在if条件语句中

上述就是小编为大家分享的Shell中$0, $#, $*, $@, $?, $和命令行参数怎么使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Shell中$0, $#, $*, $@, $?, $$和命令行参数怎么使用

本文链接: https://www.lsjlt.com/news/255953.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell中$0, $#, $*, $@, $?, $$和命令行参数怎么使用
    这期内容当中小编将会给大家带来有关Shell中$0, $#, $*, $@, $, $和命令行参数怎么使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。特殊变量列表变量含义$0当前脚本的文件名$n传递给脚...
    99+
    2023-06-09
  • shell中怎么获取命令行参数
    本篇文章为大家展示了shell中怎么获取命令行参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下:#! /bin/bashwhile getopts a:bc optdo &nbs...
    99+
    2023-06-09
  • linux shell命令行选项与参数怎么使用
    在Linux shell中,命令行选项和参数用于向命令提供额外的信息或配置。下面是一些常用的使用方式:1. 选项使用一个或多个短横线...
    99+
    2023-08-17
    linux shell
  • 如何使用linux shell命令行参数
    本篇内容介绍了“如何使用linux shell命令行参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!习惯使用linux命令行来管理linu...
    99+
    2023-06-09
  • 怎么在shell中获取命令行参数
    本篇文章为大家展示了怎么在shell中获取命令行参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。#! /bin/bashwhile getopts a:bc ...
    99+
    2023-06-09
  • 怎么用shell脚本读取命令行参数
    这篇文章主要介绍“怎么用shell脚本读取命令行参数”,在日常操作中,相信很多人在怎么用shell脚本读取命令行参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用shell脚本读取命令行参数”的疑惑有所...
    99+
    2023-06-20
  • shell命令行参数用法教程
    本篇内容介绍了“shell命令行参数用法教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一个shell脚本,它本身的命令参数是什么样呢?首...
    99+
    2023-06-09
  • linux shell命令行参数有哪些
    Linux shell命令行参数有以下几种常见类型: 选项参数:以"-“或”–"开头的参数,用于控制命令的行为...
    99+
    2024-02-29
    linux shell
  • C语言命令行参数怎么使用
    这篇“C语言命令行参数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言命令行参数怎么使用”文章吧。c语言的命令行...
    99+
    2023-06-17
  • 使用shell 命令怎么统计代码行数
    使用shell 命令怎么统计代码行数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。分享一个统计代码行的shell命令: find . “(”...
    99+
    2023-06-09
  • java 使用命令行参数(转)
    java 使用命令行参数(转)[@more@]有时你想在运行程序时将信息传递到一个程序中。这通过将命令行参数(command-line arguments )传递给main() 来实现。命令行参数是程序执行时在命令行中紧跟在程序名后的信息。...
    99+
    2023-06-03
  • shell脚本命令行参数有哪些
    本篇内容主要讲解“shell脚本命令行参数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本命令行参数有哪些”吧!之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员...
    99+
    2023-06-09
  • python命令行参数模块argparse怎么使用
    今天小编给大家分享一下python命令行参数模块argparse怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Pyt...
    99+
    2023-07-05
  • diff和patch命令怎么在shell中使用
    diff和patch命令怎么在shell中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。shell中常用的命令:diff(比较文件内容)和patch(打补丁)1.dif...
    99+
    2023-06-09
  • Python 中使用 argparse 解析命令行参数
    目录1、Python 中的参数解析2、类型3、子命令4、程序架构使用 argparse 模块为应用程序设置命令行选项。 有一些第三方库用于命令行解析,但标准库 argparse 与之...
    99+
    2024-04-02
  • 怎么使用golang执行Linux shell命令
    这篇文章主要讲解了“怎么使用golang执行Linux shell命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用golang执行Linux shell命令”吧...
    99+
    2023-07-02
  • Pytest allure 命令行参数的使用
    先看看 allure 命令的帮助文档 cmd 敲 allure -h allure 命令的语法格式 allure [options] [command] [command ...
    99+
    2024-04-02
  • Python中命令行参数argparse模块的使用
    目录传入一个参数位置参数可选参数默认参数必需参数argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数。...
    99+
    2023-02-01
    Python argparse模块 Python argparse命令行参数
  • 使用Shell expr命令怎么对整数进行计算
    本篇文章给大家分享的是有关使用Shell expr命令怎么对整数进行计算,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。expr 是 evaluate expressions 的...
    99+
    2023-06-08
  • Map命令怎么在Shell中使用
    Map命令怎么在Shell中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Map定义:在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明方式1:dec...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作