首页 > 系统相关 >【转载】shell-命令行参数

【转载】shell-命令行参数

时间:2024-08-11 15:29:42浏览次数:8  
标签:shell param echo Zara 参数 命令行 each print 转载

命令行参数(转自http://c.biancheng.net/cpp/view/2739.html

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

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

请看下面的脚本:

#!/bin/bash
echo "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/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"

echo "\$@=" $@
echo "\"\$@\"=" "$@"

echo "print each param from \$*"
for var in $*
do
    echo "$var"
done

echo "print each param from \$@"
for var in $@
do
    echo "$var"
done

echo "print each param from \"\$*\""
for var in "$*"
do
    echo "$var"
done

echo "print each param from \"\$@\""
for var in "$@"
do
    echo "$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 Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$

  

标签:shell,param,echo,Zara,参数,命令行,each,print,转载
From: https://www.cnblogs.com/596014054-yangdongsheng/p/10742644.html

相关文章

  • SSH(Secure Shell)服务配置
    SSH(SecureShell)服务配置是一个涉及多个步骤和配置项的过程,旨在确保远程登录和数据传输的安全性。以下是对SSH服务配置的详细阐述,包括基本概念、配置步骤、常用选项以及最佳实践。一、SSH基本概念SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。S......
  • Linux5:Shell编程——函数、重定向
    目录前言一、函数1.函数结构2.函数实例3.函数传参二、重定向1.输出重定向2.输入重定向3.同时使用4.重定向深入了解 5.垃圾桶总结前言    Shell编程将会在本章完结 一、函数1.函数结构#!/bin/sh#函数functionfun1(){echo"thisisaf......
  • 大数据学习必备前置知识——Linux 之shell
    大数据学习必备前置知识——Linux之shell大家好!在为您带来精彩的技术干货之前,先给您推荐一个我精心运营的公众号[大数据深度洞察]。在这里,您将获取更多独家的技术分享、实用案例以及行业前沿资讯。亲爱的读者们,当您准备开启这篇充满价值的技术文章之旅时,不妨先关注我的公......
  • Linux Shell编程--正则表达式、grep、sed、awk
    前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除!一、正则表达式1、正则表达式定义1.1、简介正则表达式是一种强大的文本模式匹配工具,用于搜索、替换或分割字符串。在Shell脚本中,正则表达式通常与grep、sed和awk等工具一起使用。1.2、层次分类基......
  • shell的相关知识(变量、脚本定义)
    一、shell的相关知识:1、对于shell编程语言大体分为:机器语言、汇编语言、高级语言2、shell变量类型:事先确定数据的存储格式和长度shell变量分为:字符型、数值型数值型又分为:整型、浮点型(在shell中一般不使用浮点型数值进行操作)3、shell:弱类型编程语言强:变量在使用前,必须事先......
  • shell脚本
                          添加用户和组的练习  1、创建一个用户mandriva,其ID号位2002,基本组位distro(组ID位3003),附加组位linux#groupadd-g3003distro;groupaddlinux;useradd-u2002-g3003-Glinuxmandriva 2、创建一......
  • ./执行shell脚本提示“No such file or directory”
     ./执行shell脚本时提示如下,而关键在前半句,"/bin/sh^M:badinterpreter"错误的解释器。^M符号使得系统无法正确判断shell解释器为/bin/sh。这其实是Windows系统下编辑脚本,换行带来的'\r'。$./test.sh-bash:./test.sh:/bin/sh^M:badinterpreter:Nosuchfileordire......
  • Python-和-PowerShell-协作教程-全-
    Python和PowerShell协作教程(全)原文:PowerShellandPythonTogether协议:CCBY-NC-SA4.0一、面向调查人员的PowerShell简介PowerShell提供了一个强大的获取引擎,可以从实时系统、服务器、外围设备、移动设备和数据驱动的应用程序(如ActiveDirectory)中获取大量信息。......
  • Jenkins 的 Shell 命令中执行一个 JAR 包时,日志没有显示,如何禁用输出缓冲
    在Jenkins的Shell命令中执行JAR包时,如果日志没有显示且你想禁用输出缓冲,可以尝试使用以下方法之一来禁用输出缓冲:1.使用 stdbuf 命令:stdbuf 是用于修改标准I/O缓冲机制的命令,可以用来调整输出的缓冲方式。你可以尝试使用 stdbuf 命令来禁用输出缓冲,例如:stdbuf-o......
  • jenkins的shell command中如何让python 实时显示执行日志
    在使用Jenkins的shellcommand里面执行python脚本时,我们希望在构建shell脚本时可以实时输出日志,但是在构建python脚本时,是等到python执行完成以后,才显示结果,这个对于我们判断脚本执行状态非常不友好。而之所以会出现这种情况,是因为python默认是有缓存的,所以我们需要禁用输入......