shell当中的参数扩展

34 篇文章 1 订阅
shell当中的参数扩展
1  
${parameter:-word}如果参数没有设定或者不存在,扩展的结果就是word的值,如果非空,就输出参数的具体数值
${parameter:=word}如果参数没有设定或者不存在,扩展的结果就是word的值,且这次操作会将word设定为parameter的值如果非空,就输出参数的具体数值
${parameter:?word}如果参数不存在或者没有设定,则执行脚本失败退出,并且把word作为标准出错提示输出到,如果存在输出参数的值.
${parameter:+word}如果参数没有设定或者不存在,没有任何的结果,如果存在,则输出结果是word的值,这样可以很好的数据隐藏起来。
例如:
$: temp=                                  //还没有设定值
$: echo ${temp:-"not set temp value"}     //因为没有设定,所以没有数据输出,就把"-"后面的文本作为提示输出
not set temp value
$: echo $temp                             //前面的操作不会对temp的值有任何的影响,所以输出内容无

$: echo ${temp:?"not set tmep value"}     //因为temp还是没有值,所以它现在的读取会错误,同时会把“?”后面的文本作为出错信息输出。
bash: temp: not set tmep value
$: echo ${temp:="true"}                   //temp没有值,这个输出操作会把"="后面的文本输出作为提示,同时并把这个文本作为temp的值进行赋值。
true
$: echo ${temp:+"temp has value"}         //因为temp现在有值所以现在输出"+"后面的文本
temp has value
$: echo $temp
true


2
${!prefix*}  =  ${!prefix@} 可以输出参数的名称,具体的是以prefix为前缀的变量名。
例如:
$: echo ${!BASH*}
BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_COMPLETION_COMPAT_DIR BASH_LINENO BASH_REMATCH BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
$:


3
${#parameter} 输出parameter的字符串的长度
例如:
$: temp='true'
$: echo ${#temp}
4



4
${parameter:offset}
${parameter:offset:length}  输出parameter的结果子串(偏移offset,长度为length)
例如:
$: temp="I Love Linux Shell"
$: echo ${temp:6}
Linux Shell
$: echo ${temp:6:6}
Linux

5
${parameter#pattern}     输出parameter的结果子串(原串删除匹配pattern的子串)
${parameter##pattern}    输出parameter的结果子串(原串删除匹配pattern的最大子串)
例如:
[me@linuxbox ~]$ foo=file.txt.zip
[me@linuxbox ~]$ echo ${foo#*.}
txt.zip
[me@linuxbox ~]$ echo ${foo##*.}
zip
和前面两个一样,只不过是从后面开始的。
${parameter%pattern}
${parameter%%pattern}
例如:
[me@linuxbox ~]$ foo=file.txt.zip
[me@linuxbox ~]$ echo ${foo%.*}
file.txt
[me@linuxbox ~]$ echo ${foo%%.*}


6
${parameter/pattern/string}  匹配和一次替换
${parameter//pattern/string}  匹配全部替换
${parameter/#pattern/string}    从字符串的最前面开始匹配,匹配成功则替换,否则不变
${parameter/%pattern/string}    从字符串的最后开始匹配,匹配成功则替换,否则不变
例如:
$: temp='yeah yeah wow hum'
$: echo ${temp/yeah/YEAH}
YEAH yeah wow hum
$: echo ${temp//yeah/YEAH}
YEAH YEAH wow hum
$: echo ${temp/#yeah/YEAH}
YEAH yeah wow hum
$: echo ${temp/%hum/HUM}
yeah yeah wow HUM
$:

7
${parameter,,} 全部转换为小写的
${parameter,} 扩展变量后,将第一个字母小写,其他的不做处理
${parameter^^} 拓展变量,并是所有字母变成大写的
${parameter^}扩展变量后,将第一个字母大写,其他的不做处理
例如:
$: temp='I Love Linux'
$: echo ${temp,,}
i love linux
$: echo ${temp,}
i Love Linux
$: echo ${temp^^}
I LOVE LINUX
$: echo ${temp^}
I Love Linux
$:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在shell脚本中,可以使用特殊变量$1,$2,$3...来获取传递给脚本参数。其中$1表示第一个参数,$2表示第二个参数,以此类推。例如,以下是一个简单的示例脚本,用于获取两个参数并将它们相加: ```shell #!/bin/bash num1=$1 num2=$2 sum=$((num1 + num2)) echo "The sum of $num1 and $num2 is: $sum" ``` 在执行此脚本时,需要在命令行中传递两个数字作为参数,例如: ```shell $ ./script.sh 2 3 The sum of 2 and 3 is: 5 ``` 在上面的示例中,$1和$2分别获取了命令行中传递的第一个和第二个参数,并将它们相加后输出了结果。 ### 回答2: 在shell脚本中,我们可以通过使用特殊变量来获取参数。这些特殊变量包括$0、$1、$2等。其中,$0代表脚本本身的名称,$1代表第一个参数,$2代表第二个参数,以此类推。 我们可以通过在脚本中使用这些特殊变量来获取命令行中传入的参数。例如,如果我们运行脚本如下: ```shell ./script.sh arg1 arg2 ``` 在脚本中,我们可以通过$1和$2来分别获取arg1和arg2的值。我们可以使用这些参数进行各种操作和计算。下面是一个简单的示例: ```shell #!/bin/bash echo "第一个参数为:$1" echo "第二个参数为:$2" result=$(($1 + $2)) echo "计算结果为:$result" ``` 当我们运行这个脚本时,会输出如下结果: ``` 第一个参数为:arg1 第二个参数为:arg2 计算结果为:arg1arg2 ``` 在这个例子中,我们通过$1和$2获取了传入的参数,然后使用这些参数进行了加法运算,并输出了计算结果。 总结起来,使用特殊变量$1、$2等可以轻松获取脚本中传入的参数,使得我们可以根据参数进行各种自定义操作。 ### 回答3: Shell脚本是一种用于执行一系列命令的脚本语言,它可以通过不同的方式来获取参数。 一种常见的方式是通过特殊变量"$1"、"$2"等来获取命令行传入的参数。其中,"$0"代表脚本本身的名称,"$1"代表第一个参数,"$2"代表第二个参数,以此类推。例如,如果我们运行"sh myscript.sh hello world",在脚本中可以使用"$1"获取到"hello",使用"$2"获取到"world"。 另一种方式是使用命令行选项来获取参数。可以使用getopt命令或者使用内置的特殊变量"$OPTARG"来获取选项参数。getopt命令可以帮助解析命令行选项并将其存储在特殊变量中。使用这种方式可以为命令行传入的参数添加更多的灵活性和可扩展性。 除了上述方法外,还可以使用环境变量来获取参数。环境变量是一种特殊的变量,它们在整个系统中可见。通过设置环境变量,我们可以在脚本中获取到需要的参数。 总之,Shell脚本可以通过特殊变量、命令行选项和环境变量等方式获取参数。这些方式可以根据具体的需求和场景进行选择和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值