个人工具
登录
查看“Shell编程基础”的源代码 - Ubuntu中文
页面
讨论
查看源代码
历史
搜索
导航
首页
最近更改
随机页面
页面分类
帮助
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息
查看“Shell编程基础”的源代码
来自Ubuntu中文
←
Shell编程基础
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 变量 == Shell 变量默认全都是字符串。 === 变量赋值和引用 === Shell 编程中,使用变量无需事先声明。变量名的命名遵守正则表达式 <tt>[a-zA-Z_][a-zA-Z0-9_]+</tt>,也就是由大小写字母数字和下划线组成,且不能以数字开头。请注意 shell 环境中的确有以数字和特殊符号开头的变量名,但是那些东西不可以用接下来的方式赋值。 需要给变量赋值时,可以这么写: <source lang=bash>varname=值 [var2=val2 ....]</source> 请注意这边等号左右不能有空格。 要取用一个变量的值,只需在变量名前面加一个 <tt>$</tt>: <source lang=bash># assign a="hello world" # 等号两边均不能有空格存在 # print printf '%s\n' "A is: $a"</source> 挑个自己喜欢的编辑器,输入上述内容,并保存为文件 first,然后执行 chmod +x first 使其可执行,最后输入 ./first 执行该脚本。其输出结果如下: <source lang="bash"> A is: hello world </source> 有时候变量名可能会和其它文字(匹配最长的符合变量名或特殊变量名要求的内容)混淆,比如: <source lang=bash>num=2 echo "this is the $numnd" # 输出 this is the — shell 尝试寻找 $numnd 的值 echo "this is the ${num}nd" # 输出 this is the 2nd — 修好了! # 花括号可以隔开变量名,但是放歪了的话… echo "this is the {$num}nd" # 输出 this is the {2}nd — 切是切开了,但是…</source> === 变量算术 === Shell 变量默认都是字符串。这也就是说,你尝试这么做,肯定没用: <source lang=bash>var=1 var=$var+1 echo $var # 输出 1+1</source> 我们可以用很多方法达成我们的目标。首先是好孩子的方法——C 风格表达式。 <source lang=bash>var=0 # bash 里面可以用 (( )) 执行 C 风格的算术表达式。 # 如果你接下来还会读 if 那一段的话,你还会知道这玩意的返回和 C 的非零真假判断一致。 (( var += 1 )) # 这是一种,现在 var 是 1 (( var++ )) # 这也是一种自增,2 (( var = var * var )) # 怎么来乘法了!var 现在是 4。 let 'var = var / 3' # 还是只有 bash 才能用的拓展。除法是整数除法,向 0 舍入,1。 # 来一点不一定要 bash 的方法吧,毕竟 sh 还有很多种,总不能全报错了吧。 # $(( )) 会展开成为这个 C 表达式求值的结果。以前 bash 有个 $[ ] 一样,但是别去用。 echo $((var += 2)) # echo 出 3,var 现在是 3。 var=$((var-1)) # 展开成 var=2,var 现在是……还用说吗,2。</source> 以前还有人用 expr 之类的外部程序来,不过这属于杀鸡用牛刀。并且调用外部程序浪费时间性能差。 <source lang=bash>var=1 var=$(expr "$var" + 1) # expr 收到三个参数 '1' '+' '1', # 按照 expr --help 里面写的方法运行 # 然后输出替换掉 $() 这里变成 var=2。 var=`expr "$var" + 1` # 前面一行的老写法,千万千万不要学。</source>
返回至
Shell编程基础
。