查看“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编程基础
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息