Linux12 深入参数

${parameter:-value}
如果parameter不为空,就替换它的值,否则就替换为value。
示例:donggua@donggua-desktop:~]$ echo using editor ${EDITOR:=/home/donggua/make}
           using editor /home/donggua/make
${parameter:=value}
${parameter:=value}
与${parameter:-value}基本相同,区别是,当parameter为空时,不但使用value,而且把它赋给parameter。
不能用这种方法给位置参数赋值。(也就是parameter不能为数字)。
[donggua@donggua-desktop:~]$ zsh=
[donggua@donggua-desktop:~]$ :${zsh:=/bin/vi}
[donggua@donggua-desktop:~]$ zsh=:${zsh:=/home/donggua/make}
[donggua@donggua-desktop:~]$ echo $zsh
:/bin/vi
${parameter:?value}如果parameter不为空,shell替换它的值。否则shell就把value写入标注错误,然后退出
[donggua@donggua-desktop:~]$ donggua=:${donggua:? "no donggua file"}
bash: donggua:  no donggua file
${ parameter:+value}如果parameter不为空,则该结构替换为value,否则什么也不替换。
[donggua@donggua-desktop:~]$ traceopt=T
[donggua@donggua-desktop:~]$echo option : $(traceopt:+“trace mode”}
     option: trace mode
[donggua@donggua-desktop:~]$traceopt=
[donggua@donggua-desktop:~]$ echo option : $(traceopt:+“trace mode”}
     option:
${#parameter}替换为parameter的长度。如果parameter是*或者@结果不定。
[donggua@donggua-desktop:~]$ text="the shell"
[donggua@donggua-desktop:~]$ echo ${#text}
9
模式匹配结构:
[donggua@donggua-desktop:~]$ var=testcase
[donggua@donggua-desktop:~]$ echo $var
testcase
[donggua@donggua-desktop:~]$ echo ${var%e}
testcas
[donggua@donggua-desktop:~]$ echo $var
testcase
[donggua@donggua-desktop:~]$ echo ${var%s*e}
testca
[donggua@donggua-desktop:~]$ echo ${var%%s*e}
te
[donggua@donggua-desktop:~]$ echo ${var#?e}
stcase
[donggua@donggua-desktop:~]$ echo ${var#*s}
tcase
[donggua@donggua-desktop:~]$ echo ${var##*s}
e
[donggua@donggua-desktop:~]$ echo ${var##teas}
testcase
[donggua@donggua-desktop:~]$ cat mybasename
echo ${1##*/}
[donggua@donggua-desktop:~]$ ./mybasename /usr/spool/donggua
donggua

Shell教本的追踪与调试:
[donggua@donggua-desktop:~]$ cat ctype
if [ $# -ne 1 ]
then
   echo "用法:ctype字符"
   exit 1
fi
char="$1"
numchar=$(echo "$char" | wc -c)
if [ "$numchar" -ne 1 ]
then
   echo "请键入单字符"
exit 1
fi
case "$char" in
[0-9]) echo "数字";;
[a-z]) echo "小写字母";;
[A-Z]) echo "大写字母";;
*) echo "特殊字符";;
esac
[donggua@donggua-desktop:~]$ sh -x ./ctype a
+ [ 1 -ne 1 ]
+ char=a
+ echo a
+ wc -c
+ numchar=2
+ [ 2 -ne 1 ]
+ echo 请键入单字符
请键入单字符
+ exit 1

set:作用1:设置各种shell选项;用2:  给位置参数$1,$2等重新赋值。
set -x
-x打开shell的跟踪模式:
[donggua@donggua-desktop:~]$ x=*
[donggua@donggua-desktop:~]$ set -x
[donggua@donggua-desktop:~]$ cmd=wc
+ cmd=wc
[donggua@donggua-desktop:~]$ ls | $cmd -l
+ wc -l
+ ls --color=auto
48
关闭跟踪模式
[donggua@donggua-desktop:~]$ set +x
+ set +x
[donggua@donggua-desktop:~]$ ls | wc -l
48

不带参数的set命令:
[donggua@donggua-desktop:~]$ cat words
#count words on a line
read line
set $line
echo $#
[donggua@donggua-desktop:~]$ ./words
here's a line for you to count
7

--选项
[donggua@donggua-desktop:~]$ ./words
-1+5=4
./words: line 3: set: -1: 无效的选项

统计目录下的文件数:
[donggua@donggua-desktop:~]$ set *
[donggua@donggua-desktop:~]$ echo $#
49
 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值