当前位置:首页 » 编程软件 » shell脚本运算

shell脚本运算

发布时间: 2022-07-28 19:12:45

⑴ 1.linux系统下shell脚本用case语句编写四则运算 2.linux系统下shell脚本输入数字串。进行反序输出

如果只做四个简单的运算这应应该可以

shell脚本代码如下:
#!/bin/bash
read -p "input num1:" a
read -p "input num2:" b
read -p "input operator:" o
case $o in
+) let "res=a + b"
echo $res;;
-) let "res=a - b"
echo $res;;
/) awk 'BEGIN{printf "%.2f\n",'$a'/'$b'}';;
*) let "res=a * b"
echo $res;;
esac

⑵ shell中如何按位运算

语法
$((...))

$ echo $(( 3 * 4 )) 12

在某些场景特别方便,可以免去写程序的烦琐,如验证某些运算。
下面是验证《深入理解计算系统》练习题2.12的场景

表达式 ~0 将生成一个全1的掩码,不管机器的字大小是多少,可移植。

$ printf "%x\n" $(( ~0 ))ffffffffffffffff
$ printf "%#x\n" $(( ~0 ))0xffffffffffffffff

上面的测试显示,shell中,0按位取反后的值是64位的。
shell的printf命令前导字符打印:《shell脚本学习指南》表7-4:printf的标志中描述了格式参数中"#"号的意义,"#"可以用以输出前导"0x"(16进制)、"0"(8进制)

x & 0xFF 生成一个由x的最低有效字节组成的值
$ printf "%#x\n" $(( 0x89ABCDEF & 0xFF ))0xef
$ printf "%#.8x\n" $(( 0x89ABCDEF & 0xFF ))0x000000ef

以下x = 0x87654321
A.x的最低有效字节,其他位均置为0
$ printf "%#.8x\n" $(( 0x87654321 & 0xFF )) 0x00000021
$ printf "%#.8x\n" $(( 0x87654321 & ?0xFF ))-bash: 0x87654321 & ?0xFF : syntax error: operand expected (error token is "?0xFF ")
书中给出的练习题的答案是 “x & ?0xFF”,这里的"?"号经验证,shell无法正确运行。

B.除了x的最低有效字节外,其他的位置都取补,最低有效字节保持不变。
$ printf "%#x" $(( 0x87654321 ^ ~0xff))0xffffffff789abc21

上面因为~0xff会生成64位的掩码,所以结果有些不符合预期,但后32位是符合预期的。
C.x的最低有效字节设置成全1,其他字节都保持不变。
$ printf "%#x" $(( 0x87654321 | 0xff ))0x876543ff

⑶ 关于shell脚本语言中的运算问题!我想问一下i=43 echo $[i++] 则显示43为什么

shell本身就是个命令解释器
,不会编译成机器码

命令解释器这个名字就能解释你的问题了
"命令解释器用什么把
1++
算成2的"
我觉得你钻牛角尖了,
这是个黑箱
,shell作为命令解释器的存在,对各种输入都有对应的解释方式
,至于具体如何实现,那要看shell的源码了,
这是个黑箱情况
你的问题就好像c编译器如何识别
i++的
一样,只是不同的是
c编译器将i++生成机器码
,而shell内建$i++的处理方式

⑷ 怎么用shell编写计算1+2+3…+n

shell脚本部分:

ojbk

⑸ 如何做一个逻辑或运算的SHELL脚本

我试图做一个简单的状态检查,但它似乎并没有工作。 如果$#等于0或大于1然后打个招呼。 我曾尝试以下语法没有
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
编辑:我这是bash的。
本文地址 :CodeGo.net/215809/
-------------------------------------------------------------------------------------------------------------------------
1. 这应该工作确定。
if [ "$#" == 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
我不知道这是在其他shell不同,但如果你想<,>,你需要把它们的双括号里面,像这样:
if (("$#" > 1))
...

2. 此代码工作
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
我不认为SH支持“==”。使用“=”字符串和当量整数。
man test
更多的细节。
3. 你有没有试过这样的:
if [ $# -eq 0 ] || [ $# -gt 1 ]
then
echo "$#"
fi

⑹ shell脚本主要有哪些

第一个shell脚本程序:

#!/bin/bash
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;echo "Hello, world!"

变量:

定义变量:

country="China"Number=100

注意: 1,变量名和等号之间不能有空格;

2,首个字符必须为字母(a-z,A-Z)。

3, 中间不能有空格,可以使用下划线(_)。

4, 不能使用标点符号。

5, 不能使用bash里的关键字(可用help命令查看保留关键字)。

使用变量:

只需要在一个定义过的变量前面加上美元符号$就可以了, 另外,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"

#这个需要有{}的;

重定义变量:直接把变量重新像开始定义的那样子赋值就可以了:

country="China"country="ribenguizi"

只读变量: 用 readonly 命令 可以把变量字义为只读变量。

readonly country="China"#或
country="China"readonly country

删除变量: 使用unset命令可以删除变量,但是不能删除只读的变量。用法:

unset variable_name

变量类型

运行shell时,会同时存在三种变量:

1) 局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

2) 环境变量

所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

3) shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

特殊变量:

其中, 1. 取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。2. 如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

⑺ shell 脚本里的变量怎么加1

shell 脚本里变量加一方式如下六种:

1、第一种整型变量自增方式

a=$(($a+1))

echo$a

2、第二种整型变量自增方式

a=$[$a+1]

echo$a

3、第三种整型变量自增方式

a=`expr$a+1`

echo$a

4、第四种整型变量自增方式

leta++

echo$a

5、第五种整型变量自增方式

leta+=1

echo$a

6、第六种整型变量自增方式

((a++))

echo$a

(7)shell脚本运算扩展阅读:

基本上shell分两大类:

1、图形界面shell(Graphical User Interface shell 即 GUI shell)

应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。

2、命令行式shell(Command Line Interface shell ,即CLI shell)

bash / sh / ksh / csh / zsh(Unix/linux 系统),cmd.exe/ 命令提示字符(Windows NT 系统),Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统),传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

⑻ shell脚本计算时间

TIME_INPUT=`date -d "00:00" +%s`
通过时间戳来计算
nowtime=`date +%s`
shijiancha=`expr $nowtime - $TIME_INPUT`
if [ $shijiancha -gt 180 ];then
echo 3分钟前

else
if [ $shijiancha -lt -180 ];then

echo 3分钟后

fi

fi

⑼ shell脚本中如何处理浮点运算

$ echo "scale=3; 1/13" | bc
.076
$ echo "1 13" | awk '{printf("%0.3f\n",$1/$2)}'
0.077

热点内容
流控脚本破解 发布:2025-02-07 08:39:09 浏览:413
什么是资源为什么要研究资源配置 发布:2025-02-07 08:25:19 浏览:87
钓鱼网站源码制作 发布:2025-02-07 08:23:54 浏览:139
mac运行fl需要什么配置 发布:2025-02-07 08:15:45 浏览:573
安卓怎么做都比不了苹果 发布:2025-02-07 08:12:47 浏览:238
怎么给物理机配置ip地址 发布:2025-02-07 08:01:37 浏览:139
三国志13未加密 发布:2025-02-07 07:54:37 浏览:926
马斯克中国访问 发布:2025-02-07 07:54:29 浏览:102
数据库有表 发布:2025-02-07 07:50:49 浏览:29
基于nginx搭建图片服务器原理 发布:2025-02-07 07:44:18 浏览:449