开发者学堂课程【Shell 编程入门到精通:shell 中双小括号的使用方法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/453/detail/5597
shell 中双小括号的使用方法
内容介绍:
一、总概
二、使用方法
三、特点及举例说明
一、总概
使用“【】”的时候,必须保证运算符与算数之间有空格。四则运算也只能借助:expr命令完成。而双括号“(())”结构语句,就是对shell中算数及赋值运算的扩展。
二、使用方法
语法:
((表达式1,表达式2…))
三、特点及举例说明
(1)特点
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。而a++的意思是a=a+1,b--的意思是b=b-1。
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算。
4、双括号结构扩展了for,while,if条件测试运算。
5、支持多个表达式运算,各个表达式之间用逗号“,”分开。
(2)举例说明
例:依次输出小于100以内的2的幂值。输出的结果应该是:2,4,8,16,64。
考虑到这个问题时,会想到先输入【root@xuegod63 test】# ls,隔行输出case.sh for.sh while.sh,而现在要创建一个关于vim的函数,即【root@xuegod63 test】# vim (()).sh,
那是否可以运行,当进行回车时,
出现的是pash:syntax error near unexpected token `(‘ ,
这明显是不可以的,但有多种可行的方法,第一种是加转译符,一般情况下用单引号或双引号括起来创建,
首先输入【root@xuegod63 test】# vim ‘(()).sh’,这样就可以正常进入,然后可以先随意写些代码以便于保持文件,
即输入【root@xuegod63 test】# ls ,隔行输出case.sh for.sh (()). sh while.sh,当想再次用vim形式打开时,直接将【root@xuegod63 test】# vim(()).sh回车,
出现的是pash:syntax error near unexpected token `(‘ ,明显是不行的,那想要引用时,先输入”\”符号,再输入“(“符号,再按Tab键,将每一个进行转译后,则会得出脚本【root@xuegod63 test】# vim \(\(\)\).sh,然后进行算法,首先输入 echo“The while loop example .”,
说明这是一个简单的循环语句;然后输入echo,进行空行;然后输入VAR1=1,定变量。
而当进行真正的算法时,首先要明确思路,算幂值时,我们要先进行值的判断,如VAR1代表的是2的幂值,判断条件是 var1要小于100,则var1=var1*2,说明循环一次要乘一次2,最后每循环一次,就输出一次var1的值,即echo var1,这就是求2的幂值的总体思路,而在进行写程序的时候则可以运用(())的方式,
即while ((VAR1<100)),然后回车换行输入do,运用echo输出提示信息,即echo“Value of the variable is :$VAR1”,然后再进行换行输入脚本((VAR1=VAR1*2)),然后换行输入 done,再运用echo进行输出,最后输出echo“The loop execution is finished”,然后保存退出。
完成的程序如下:
echo
“The while loop example .”
echo
VAR1=1
while
((VAR1<100))
do
echo
“Value of the variable is :$VAR1”
((VAR1=VAR1*2))
done
echo
echo“The loop execution is finished”
退出后进行执行,即输入【root@xuegod63 test】# ls ,输出 case.sh for.sh (()). sh while.sh,同样给出相对于的执行选项,即【root@xuegod63 test】# chmod +x \(\(\)\).sh。然后进行执行操作,
如下:
【root@xuegod63 test】# ./\(\(\)\).sh
The while loop example.
Value of the variable is
:1
Value of the variable is
:2
Value of the variable is
:4
Value of the variable is
:8
Value of the variable is
:16
Value of the variable is
:32
Value of the variable is :64
The loop execution is finished.
所以输出结果为
【root@xuegod63 test】# chmod +x \(\(\)\).sh
【root@xuegod63 test】# ./\(\(\)\).sh
The while loop example
Value of the variable is
:1
Value of the variable is
:2
Value of the variable is
:4
Value of the variable is
:8
Value of the variable is
:16
Value of the variable is
:32
Value of the variable is
:64
The loop execution is finished
(3)总结
应该在第一行加#!/bin/bash,如果没有写,则会以当前的 shell 来执行此脚本命令。
在当前状况下有多种shell,假如有些脚本是用 tcsh 或者 chs 来执行的则需要注明,如在开头就要写#!/bin/csh,因为 csh与当前的 bash 的某些关键字与命令是不一样的,无法执行成功。