2015年1月20日《linux程序设计》学习笔记

将命令的输出放到一个变量中
foo=$(command)会将command的输出赋值给foo

算数扩展 $(())
$(())比expr常用

例子
#!/bin/sh
x=0
while [ "$x" -ne 10 ];do
    echo $x
     x=$(($x+1))
done

exit 0

注意:这与x=$()命令不同,两对圆括号用于算术替换,而我们之前见到的一对圆括号用于命令的执行和获取输出。

参数扩展${}
for i in 1 2
do
    echo ${i}_tmp
done
将会打印:
1_tmp
2_tmp
参数扩展格式
${param:-default}如果param为空,就将它设置为default
${#param}给出param的长度
${param%word}从param的尾部开始删除与word匹配的最小部分,返回返回剩余部分
${param%%word}从param的尾部开始删除与word匹配的最长部分,返回返回剩余部分
${param#word}从param的头部开始删除与word匹配的最小部分,返回返回剩余部分
${param##word}从param的头部开始删除与word匹配的最长部分,返回返回剩余部分
例子:
#!/bin/sh

unset foo
#if the foo is NULL,output bar,or output foo
echo ${foo:-bar}
# bar

foo=fud
echo ${foo:-bar}
#fud

foo=/usr/bin/X11/startx
echo ${foo#*/}
#usr/bin/X11/startx
echo ${foo##*/}
#startx

bar=/usr/local/etc/local/networks
echo ${bar%local*}
#/usr/local/etc/
echo ${bar%%local*}
#/usr/

here文档

here文档的最常见的用户是输出大量的文本而不使用大量是使用echo
如:
#!/bin/sh

cat <<!FUNKY!
hello
this is a here
document
!FUNKY!
here文档以两个连续的小于号开始,紧接着一个特殊的字符序列,标记不能出现在文本中。


脚本程序调试:
命令行选项set选项说明
sh -n <script>set -o noexec
set -n
只检查语法错误,不执行命令
sh -v <script>set -o verbose
set -v
在执行命令之前回显命令
sh -x <script>set -o xtrace
set -x
在处理完命令之后回显命令
sh -u <script>set -o nounset
set -u
如果使用了未定义的变量,就给出出错信息

dialog工具可以使shell具有图形化的属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值