关于shell中变量设置缺省值的一点疑问?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
yang_hui1986527
帖子: 911
注册时间: 2006-03-04 23:10
来自: 江西高安
联系:

关于shell中变量设置缺省值的一点疑问?

#1

帖子 yang_hui1986527 » 2009-07-11 17:17

变量通过这句来设置缺省值:
echo "validating.. ${WHEN:="Saturday"}"

我想了解下设置变量缺省值,能否提供一些资料?有没有其他设置变量缺省值的方法?
谢谢~

代码: 全选

#!/bin/bash
#caserep
echo "    Weekly Report"
echo -n "What day do you want to run report [Saturday]:"

#if just a return is hit then except default which is Saturday
read WHEN
echo "validating.. ${WHEN:="Saturday"}"
 case $WHEN in
 Monday|monday|MONDAY|mon)
 ;;
 Sunday|sunday|SUNDAY|sun)
 ;;
 Saturday|saturday|SATURDAY|sat)
 ;;
 *) echo "Are you nuts!,this report can only be run on" >&2
  echo "on a Saturday,Sunday or Monday" >&2
  exit 1
;;
esac
echo "Report to run on $WHEN"
#command here to submitted actual report run.
微信:sn0wdr1am86
QQ: 3217680847
QQ 群:82695646
网站:https://www.itcoder.tech/
网站:http://www.snowdream.tech/
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 关于shell中变量设置缺省值的一点疑问?

#2

帖子 ChenFengyuan » 2009-07-15 19:18

http://manpages.ubuntu.com/manpages/har ... ash.1.html


${parameter:-word}
Use Default Values(使用默认值)。如果 parameter
未定义或值为空,将替换为 word 的扩展。否则,将替换为 parameter
的值。
${parameter:=word}
Assign Default Values(赋默认值)。如果 parameter 未定义或值为空,
word 的扩展将赋予 parameter. parameter
的值将被替换。位置参数和特殊参数不能用这种方式赋值。
${parameter:?word}
Display Error if Null or
Unset(显示错误,如果未定义或值为空)。如果 parameter
未定义或值为空,word (或一条信息,如果 word 不存在)
的扩展将写入到标准错误;shell 如果不是交互的,则将退出。否则,
parameter 的值将被替换。
${parameter:+word}
Use Alternate Value(使用可选值)。如果 parameter
未定义或非空,不会进行替换;否则将替换为 word 扩展后的值。
${parameter:offset}
${parameter:offset:length}
Substring Expansion(子字符串扩展)。 扩展为parameter 的最多
length 个字符,从 offset 指定的字符开始。如果忽略了
length,扩展为 parameter 的子字符串, 从 offset
指定的字符串开始。length 和 offset 是算术表达式 (参见下面的
ARITHMETIC EVALUATION 值段落)。 length 必须是一个大于等于
0 的数值。如果 offset 求值结果小于 0, 值将当作从 parameter
的值的末尾算起的偏移量。如果 parameter 是 @,结果是 length
个位置参数,从 offset 开始。 如果 parameter 是一个数组名,以 @
或 * 索引,结果是数组的 length 个成员,从 ${parameter[offset]}
开始。 子字符串的下标是从 0 开始的,除非使用位置参数时,下标从 1
开始。
回复