当前位置:网站首页>shell学习记录(一)
shell学习记录(一)
2022-06-26 00:24:00 【_Bruce】
数组及数组的遍历:
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开
arr=(200 300 500 800)
for num in ${arr[@]}
do
echo $num
done
#数组展开
echo ${arr[@]} #200 300 500 800
echo ${arr[*]} #200 300 500 800
echo "数组长度=${#arr[@]}" #4
echo "第二个元素=${arr[1]}" #300基本运算符:
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):
注意:乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
a=5
b=2
c=`expr $a + $b`
d=`expr $a - $b`
e=`expr $a \* $b`
f=`expr $a / $b`
g=`expr $a % $b`
h=$[ $a == $b ]
i=$[ $a != $b ]
echo "a+b=$c"
echo "a-b=$d"
echo "a*b=$e"
echo "a/b=$f"
echo "a%b=$g"
echo "a==b=$h"
echo "a!=b=$i"输出:
a+b=7
a-b=3
a*b=10
a/b=2
a%b=1
a==b=0
a!=b=1算数运算符:
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi输出:
a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b关系运算符:

a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于 b"
else
echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
else
echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
else
echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b: a 大于或等于 b"
else
echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
echo "$a -le $b: a 小于或等于 b"
else
echo "$a -le $b: a 大于 b"
fi输出:
10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b
布尔运算符:

a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi输出:
10 != 20 : a 不等于 b
10 小于 100 且 20 大于 15 : 返回 true
10 小于 100 或 20 大于 100 : 返回 true
10 小于 5 或 20 大于 100 : 返回 false
逻辑运算符:

a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi输出:
返回 false
返回 true字符串:

a="abc"
b="efg"
if [ $a = $b ]
then
echo "$a = $b : a 等于 b"
else
echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
echo "-z $a : 字符串长度为 0"
else
echo "-z $a : 字符串长度不为 0"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串长度不为 0"
else
echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
echo "$a : 字符串不为空"
else
echo "$a : 字符串为空"
fi输出:
abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空文件:

实例
变量 file 表示文件 /var/www/runoob/test.sh,它的大小为 100 字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:
file="/var/www/runoob/test.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ]
then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
if [ -d $file ]
then
echo "文件是个目录"
else
echo "文件不是个目录"
fi
if [ -s $file ]
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi输出:
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在
边栏推荐
- regular expression
- PTA class a simulated 11th bomb: 1124-1131
- cyclegan:unpaired image-to-image translation using cycle-consistent adversarial network
- Talking about interface test (2)
- UN make (6) conditional execution of makefile
- 宁要一个完成,不要千万个开始(转载自豆瓣)
- Easyexcel read file
- Xiaomi tablet 5 Pro unlock bootloader
- Abnova丨CSV 单克隆抗体解决方案
- Disruptor(一)Sequence
猜你喜欢

One stop solution EMQ for hundreds of millions of communication of Internet of things

-- EGFR FISH probe solution

Tengwenze, a hot-blooded boy, was invited to serve as the image ambassador of the global finals of the sixth season perfect children's model

tos cos dscp 区别和作用

CYCA少儿形体礼仪 乐清市培训成果考核圆满落幕

Show spirit chenzitong was invited to be the chief experience officer of the global finals of the sixth season perfect children's model

轻轻松松理解指针

秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官

biggan:large scale gan training for high fidelity natural image synthesis

pixel 6 root
随机推荐
Distributed systems (II) understanding of distributed transactions
buffer
Sweet cool girl jinshuyi was invited to be the spokesperson for the global finals of the sixth season perfect children's model
一分钟了解同步、异步、阻塞和非阻塞的区别
Data analysis - similarities and differences between C-end and b-end data analysis
影响个人成长的三个因素
胰蛋白酶的化学性质及应用
PTA class a simulated fifth bomb: 1148-1151
Make a row of the dataframe a column name
V4L2+QT视频优化策略
App test (I)
PTA class a simulated sixth bomb: 1156-1159
GUN make (7) 执行make
Exploring temporary information for dynamic network embedding
regular expression
About vs scanf, 'scanf' appears: this function or variable may be unsafe Solutions to the problem of consumer usi
Talking about interface test (I)
Pre ++, post ++ and pre -- and post -- (+a, a++ and --a, a--)
keda 2.7.1 scaledJob 代码简要分析
秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官
