荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 1526|回复: 0

shell脚本里面可以使用c++语法了

[复制链接]

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
发表于 2020-6-24 20:59 | 显示全部楼层 |阅读模式
用双括号括起来就行
https://www.cnblogs.com/shc336/p/10178120.html
双括号(()),shell与C++的桥梁
使用语法:
((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算.

注意点:
1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b--
2.在双括号结构中,所有变量可以不加入$符号前缀,也可以加入.
3.在双括号可以进行逻辑运算,四则运算,而且运算符合数值之间可以没有空格,也可以有空格.
4.双括号结构扩展了for,while,if条件测试运算.
5.支持多个表达式运算,各个表达式之间用逗号,分开.
6.使用[]时必须保证运算符与数值之间有空格,而(())时数值与运算符可以没有空格.

四则运算

val++    后增      

val--     后减

++val    先增

--val     先减

为了便于理解,这里有个脚本

复制代码
#! /bin/bash

num=1

while ((num<100))    #数值与运算符可以没有空格,变量的使用时也可以不使用$num
do
        echo "$num"
        ((num=++num))  #当变为((num=num++))时,结果为1的无限循环
done
复制代码
此脚本运行的结果为输出1到99。先增与后增时,输出的结果完全不同



逻辑运算

复制代码
#!/bin/bash

a=2;
((b=a**3));

echo $((b>=8?8:9));

(($?!=1))&& echo "ok";
复制代码
在双括号内可以直接使用逻辑表达式,双小括号内的“?”则代表了shell中的if-then-else结构,如上面的((b>8?8:9))表示如果b>=8则输出8,否则输出9,这就是一个典型的C++语言,

变量可以带$,也可以不带。



流程控制

复制代码
#!/bin/bash

num=100;
total=0;

for((i=0;i<=num;i++));
do
    ((total+=i));
done
echo $total;

total=0;
i=0;
while((i<=num));
do
    ((total+=i,i++));
done
echo $total;

if((total>=5050));then
    echo "ok";
fi
复制代码
上面的两个模块,都是计算1到100间所有值的和,当结果满足预期则输出‘ok’
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 02:23 , Processed in 0.013814 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表