shell 参数

位置参数

所谓位置参数 (positional parameter) ,指的是 Shell 脚本的命令行参数 (argument) ;同时也表示在 Shell 函数内的函数参数。它们的名称是以单个的整数来命名。出于历史的原因,当这个整数大于 9 时,就应该以花括号( {} )括起来 :

echo first arg is $1
echo tenth arg is ${10}

特殊变量参数

$#

提供传递到 Shell 脚本或者函数的参数总数。

$*,[email protected]

一次表示所有的命令行参数.这两个参数可用来把命令行参数传递给脚本或函数所执行的程序.

“$*”

将所有命令行参数视为单个字符串,等同于“$1 $2...”。$lFS 的第一个字符用来作为分隔字符,以分隔不同的值来建立字符串

“[email protected]”

将所有的命令行参数视为单独的个体,也就是单独字符串,等同于"$1" "$2" ..这是将参数传递给其他程序的最佳方式,因为它会保留所有内嵌在每个参数里的任何空白

# 设置参数
[email protected]:~$ set -- hello "hi there " greetings
[email protected]:~$ echo $#
3
# 没有加引号的 $*和[email protected]是一样的效果
[email protected]:~$ for i in $*
> do echo i is $i
> done
i is hello
i is hi
i is there
i is greetings
[email protected]:~$ for i in [email protected]; do echo i is $i; done
i is hello
i is hi
i is there
i is greetings
# 加了引号的,两个就不一样了
[email protected]:~$ for i in "$*"; do echo i is $i; done
i is hello hi there greetings
[email protected]:~$ for i in "[email protected]"; do echo i is $i; done
i is hello
i is hi there
i is greetings
[email protected]:~$ 
[email protected]:~$ shift
[email protected]:~$ echo $#
2
[email protected]:~$ shift
[email protected]:~$ echo $#
1

p

时间: 2024-10-11 17:51:20

shell 参数的相关文章

Linux Shell参数替换

Linux Shell参数替换 2013-06-03 10:01 by 轩脉刃, 1816 阅读, 0 评论, 收藏, 编辑 Bash中的符号的作用是参数替换,将参数名替换为参数所代表的值.对于 来说,大括号是可选的,即A和 {A}代表同一个参数. ${}带冒号的有下面几种表达式: ${parameter:-word} 如果parameter为null或者未设置,整个参数替换表达式值为word ${parameter:=word} 如果parameter为null或者未设置,整个参数替换表达式值

Shell参数展开

参数展开(parameter expansion)是shell提供变量值在程序中使用的过程. 展开运算符 包括替换运算符和模式匹配运算符 替换运算符 运算符 替换说明 记忆 ${varname:-word} 若varname存在且非null,则返回其值:否则返回word. 空则返回word ${varname:=word} 若varname存在且非null,则返回其值:否则,设置varname的值为word,并返回其值.改变变量的值. 空则返回word,并改变变量值 ${varname:?mes

Linux Shell参数扩展(Parameter Expansion)

本文主要参考:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 其他资料:http://www.ibm.com/developerworks/cn/linux/l-bash-parameters.html 参数扩展的表示形式为:${expression}.expression包括各种字符直到匹配上'}'.当出现以下情况时候'}'不会被检查来匹配: 1)在转义字符\之后,如\{

shell参数中空格

在使用shell传参数时. 解析参数时请不要用shift  action="$1" case "$action" in     status)         shift         [email protected]         exit $?     ;;     ...      *)         help         exit -1     ;; esac 因为就算有双引号,也无法再次传递. 而是应该确定的按参数追逐个传递.     stat

shell参数 传递

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 [email protected] 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 区别:@* 相同点:都是引用所有参数 不同点:只有在双引号中体现出来.假设在脚本运行时写了三个参数(分别存储在12 3

Linux - Shell - 参数获取

概述 参数 背景 复习一下 shell 脚本的参数获取 场景 os centos7 1. 参数: 基础 概述 简单描述 参数 1. 获取参数 获取 第一个 参数 获取参数 使用 ${num} 获取参数 ${1} 获取 第一个参数 代码 #!/bin/bash var1=${1} echo ${var1} 其他 可以尝试 ${2}, ${3} 等获取后续参数 默认情况下, 如果参数不足, echo 不会报错, 其他命令, 需要验证 2. 获取多个参数 问题1: 获取多个参数 一个一个获取参数, 如

linux命令(while,shell参数的用法)

#!/bin/bash while IFS=: read name1 name2 name3 name4 #IFS是从文件读取内容时指定的分割符号,将a中的内容以:分开的部分分别赋值给相应变量. do echo $name1 '|' $name2 '|' $name3 '|' $name4 done <a #反引号与$()的功能是命令替换,将反引号或$()中的字符串当作命令来执行,但是反引号中不能继续有反引号,而$()可以有. LS=`ls` echo $LS #单引号完全不解析命令,忽略所有特

shell参数处理模板

存一份模板,以后简单参数处理就用它了 #!/bin/bash while getopts h:ms option #选项后面的冒号表示该选项需要参数 do case "$option" in h) echo "option:h, value $OPTARG" #参数存在$optarg中 echo "next arg index:$OPTIND";; m) echo "option:m" echo "next arg

set -- 传递变量到shell 参数

set -- The -- is the standard "don't treat anything following this as an option"   不把后面的string 看成选项(直接看成参数) [[email protected] ~]# cat set2.sh#!/bin/bash var="1 2 3"echo $var set -- $var #do not treat - as option ,only take $var as $1