当前位置:首页 » 网页前端 » shell脚本let语法是什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell脚本let语法是什么

发布时间: 2022-05-23 02:46:28

1. Linux shell脚本问题,请高手解答

expr运算中,运算符两侧都要有空格的,除此格式错误外其他没有错误!

另外,` `内的命令及shell外部命令(如expr)都会新建子shell去执行,开销大。强烈建议用shell内建命令let做基本运算。
number=`expr $number + 1`
sum=`expr $sum + $number`

可以改为:
let number+=1
let sum+=number

let支持C语法运算,变量前可以不加$取值符号;支持使用+=运算符,a+=b等同于a=a+b,可以让代码更简洁高效。

用let时运算表达式如果有空格,要放入双引号中,如:
let sum="sum + number"

2. shell里一个let命令,用sh跑不了,但bash可以,发现bin里面sh是dash的链接,那么sh和bash功能上什么区别

sh是shell的最小实现,基本都是符合POSIX标准的。
而bash在POSIX标准基础上添加了很多扩展语法和功能。
dash是Ubuntu默认的shell,dash与bash的区别网上一搜就有,我记得有一个区别就是dash不支持数组,而bash支持。可以更改Ubuntu的默认shell为bash的。

如果对可移植性有要求,写脚本还是尽量遵循POSIX标准的语法。虽然bash中有些语法非常方便。

3. shell脚本中 变量 let nume=0什么意思

let是做整数运算的,这里只是给num赋值为0而已
举个小例子
a=1
b=2
let c=$a+$b
echo $c
结果$c应该为3

4. 我的shell bash脚本怎么不支持let命令

这是因为,你的登录shell,不是默认的bash shell
所以这个let就没有。
你在终端输入:chsh
提示输入口令,就可看到你的登录shell是什么了,
如下:
口令:
正在更改 XXXX 的 shell
请输入新值,或直接敲回车键以使用默认值
登录 Shell [/bin/tcsh]:
你输入/bin/bash
确认回车,重启之后,就可以用let了

5. shell脚本求助

问题一:
HWaddr=`ifconfig eth0 | grep HWaddr | awk '{print $NF}'`
说明:用grep获取包含HWaddr即MAC地址的那行内容,然后通过awk中的$NF获取最后一个字段即MAC地址内容。

问题二:
#!/bin/sh
if [ $# -ne 2 ]; then #判断参数个数,若不等于2提示错误及正确用法
echo "Two arguments are required!"
echo "Usage: `basename $0` num1 num2" #basename用于去除脚本路径仅取脚本名
exit 1
fi
let rtn=$1*$1+$2*$2 #使用shell内建命令let做运算
echo $rtn
exit 0

6. linux shell let语句

你说的是素数吧。。。
shell作运算不太合适

7. shell新手入门 #!/bin/sh as=3 square(){ let"res=$1*$1" echo $res } square $as ~ 怎么不能跑

let是一个shell命令,后面需要加空格。

letres=$1*$1

这样就行了。

8. shell中的let不可以这样用吗 为什么我在aix主机上显示语法错误。

(( )) 这种运算符是bash下才支持的,支持类似C风格的运算方式,而sh不支持。
sh下用let,只能类似这样:let a=5+3,中间是不允许空格的

9. 你好 我是刚才提问shell问题的人 let "number = $number+1"这句怎么解释,如果是100条选27条要怎么写 谢

既然是随机,就得用到随机数了,shell下的随机数变量是$RANDOM,从0-32767,但你的记录数只有100条,所以要用余数,下面是一个例子:

#!/bin/bash
i=1
lines=`wc-l<a.txt`#求文件的总行数
touch/tmp/sed.script
while[$i-le27];do
random=$(($RANDOM%$lines+1))
echo"${random}d">>/tmp/sed.script
i=$(($i+1))
done

sed-f/tmp/sed.scripta.txt>b.txt
rm-f/tmp/sed.script

不过这个脚本没有判断有可能出现重复的随机数,需要再改进:

#!/bin/bash
i=1
lines=`wc-l<a.txt`#求文件的总行数
touch/tmp/sed.script1
while[$i-le100];do#得到100个随机数,实际略大于27即可,不一定要100个
random=$(($RANDOM%$lines+1))
echo"${random}d">>/tmp/sed.script1
i=$(($i+1))
done

#从100个随机数中去掉重复的,保留27个
uniq/tmp/sed.script1|head-n27>sed.script2
sed-f/tmp/sed.script2a.txt>b.txt
rm-f/tmp/sed.script1
rm-f/tmp/sed.script2

10. linux Shell编程中常用的数学计算方法:expr,let,bc及其他。哪个效率更高一点

从效率来说let==$(()) > expr > bc,这个是绝对的。

let和$(())运行是内建命令,使用相同的算法。

expr和bc是外部程序,expr的体积几乎等于bc的1/3,执行一次装入内存所消耗的时间就不一样。

从运算能力来说,自然bc排第一位。

其实还有awk,能更好的执行基本运算、汇总、求平均等更复杂的。而且还可以使用数组、哈希表。