Shell编程——变量、判断、重复动作

原创
2015/10/13 09:35
阅读数 164

Shell编程——变量、判断、重复动作

  • 变量除了维护有用的值还用于管理程序的状态,还可进行算术计算。 流程控制的功能造就了程序语言:条件判断、循环、函数。 *

变量复制与环境

  • 变量阈值之后相当与scala的 var 赋值,但是你想达到 val 的效果。使用 readonly
hours_per_day=24
readonly hours_per_day

环境是一个全局的(对所有用户而言)或者局部的(对某个用户而言)的简单map 环境,使用 export 可以将变量放入。为了兼容最好使用先赋值,在export。

declare -i your_var=your_value   # not readonly
declare -ir your_var=your_value  # readonly
unset your_var
unset -v your_var                # delete your except your_var
unset -f
  • 替换操作符号
${varname:-word} #当 varname 为 null 时 返回 word 否则返回 varname 不给 varname 赋值
${varname:=word} #当 varname 为 null 时 返回 word 否则返回 varname 给 varname 赋值word
${varname:+word} #当 varname 不为 null 时 返回 word 否则返回 null 不给 varname 赋值
${varname:?message} #当varname为null时返回 varname:?message
${#varname}      #获取 varname 的长度
  • 位置参数 直接实战代码看效果
# set 设置三个参数
clebeg@localhost:~$ set -- hello "hi there" greetings
clebeg@localhost:~$ echo there are $# total arguments
# 不加和加双引号的 $@ 和 $* 效果
clebeg@localhost:~$ for i in $@; do echo i is $i; done
i is hello
i is hi
i is there
i is greetings
clebeg@localhost:~$ for i in $*; do echo i is $i; done
i is hello
i is hi
i is there
i is greetings
clebeg@localhost:~$ for i in "$*"; do echo i is $i; done
i is hello hi there greetings
clebeg@localhost:~$ for i in "$@"; do echo i is $i; done
i is hello
i is hi there
i is greetings
clebeg@localhost:~$ shift
clebeg@localhost:~$ for i in "$@"; do echo i is $i; done
i is hi there
i is greetings

if elif else fi

建议的方式

if [ -f "$file" ] && ! [ -w "$file" ]
then
fi
#字符串比较传统方式
if [ "X$answer" = "Xyes" ] ...

case "$1" in
  -f)
    ;;
  -d | --directory)
    ;;
  *)
    echo $1: unkown option >&2
    exit 1
    ;;
esac
展开阅读全文
打赏
1
10 收藏
分享
加载中
更多评论
打赏
0 评论
10 收藏
1
分享
返回顶部
顶部