4. linux编程语法
Posted mamingchen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. linux编程语法相关的知识,希望对你有一定的参考价值。
一. linux shell 编程语法
1. 变量
1.定义与使用变量
var_name="123" # 变量定义的 = 两边不能有空格,如 var_name = "123" 会报错
echo $var_name # 通过 $变量名 来使用变量
2. 将变量设置为只读变量
var_only_read="Hello"
readonly var_only_read # 通过readonly关键字
3. 删除变量
unset var_name
# 注意:只读变量是不能被删除的
# 如果要删除只读变量,关闭 shell 终端,重新打开就没有了。 因为变量的作用范围就是在当前shell窗口
4. 变量类型
-
字符串:
var_name="victom"
-
拼接字符串:
greeting="hello,$var_name !"
-
数组:
1)
array_name=(value0 value1 value2)
:一次性声明多个数组成员,元素与元素之间使用空格分割
2)array_name[0]=value0
: 单独赋值 -
取数组:
value=${array_name[n]}
- 实战
- 数组初始化
my_arr=(a b "c" d)
echo "第一个元素是:${my_arr[0]}"
echo "使用*或者@取出所有数组元素: ${my_arr[@]}, ${my_arr[@]}"
- 数组单个定义
my_arr[0]=1
my_arr[4]=4
echo "使用*或者@取出所有数组元素: ${my_arr[@]}, ${my_arr[@]}"
2. 控制语句 if,for, while
1. if
# 语法
if [ 条件 ]; # 条件必须用[]包裹起来,条件表达式左右要有一个空格
then
指令1;
指令2;
fi
# 实例1
if [ 2==2 ];then echo "true";else echo "false";fi
# 实例2: 如果要用 > 表示,则要用两个 [[ ]]
if [[ 2>1 ]];then echo "true";else echo "false";fi
# 实例3: 如果要用一个 [ ],则要使用 -gt -lt 表示大于或小于
if [ 2 -gt 2 ];then echo "true";else echo "false";fi
- 实战
比较两个变量的大小,并输出不同的值
a=90
b=100
if [ $a -eq $b ]; then echo "equal"; elif [ $a -gt $b ]; then echo "big";elif [ $a -lt $b ];then echo "small";fi
2. for
# 语法
for var in item1 item2 ...itemN
do
指令1
指定2
done
#实例
for i in 1 2 3 4 5
do
echo "hello $i"
done
- 实战
循环读取test.txt文件内容并输出
# cat test.txt:显示文件内容
# $(cat test.txt): 表示把cat test.txt当做命令执行得到一个结果,然后交给for循环去循环
for line in $(cat test.txt)
do
echo $line
done
3. while
# 语法
while 条件
do
指令..
done
#示例
a=1
# 注意 while后面的条件要用 ()括号
while (( $a < 5 ));do echo $a; let a++; done;
- 实战
循环读取文件内容并输出
# read line : 表示读取文件中的行,line是变量
# < test.txt: 表示从这个文件读取内容
while read line; do echo $line; done < test.txt
二. bash脚本的编写
1. read命令
定义
read 命令是用于从终端或者文件中读取输入的内容的 内部命令
,读取的是整行输入,每行末尾的换行符不被读入
read命令使用
- 从标准输入读取输入并赋值给变量
read var
键盘输入一个内容, 就会自动赋值给变量var
echo $var
- 从标准输入读取多个内容
read var1 var2 var3
- 不指定变量(默认赋值给REPLY)
read
2. 脚本参数传递
脚本是放在.sh文件中的,因此可以给.sh脚本进行参数传递
执行.sh文件的时候,空格 参数就可以传递进去了
$0: 脚本名称
$1~$n: 获取参数,打印传参的内容
$#: 传递到脚本的参数个数
$$: 脚本运行的当前进程ID号
$*: 以一个单字符串显示所有向脚本传递的参数
$?: 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
-实战
新建一个test.sh文件
#!/bin/bash # 第一行输入这个内容,目的指定bash shell
echo $1,$2,$3 # $1,$2,$3 分别对应着传递进来的参数
echo "这个shell的文件名是:" $0
echo "参数数量是: " $#
echo "参数的所有内容: " $*
echo "脚本的返回状态:" $?
执行脚本并传递参数,参数111 222 333 直接跟在执行的文件名后面就行
3. 基本运算
a=1 b=2
# 语法有严格的格式要求
# 1. 加减乘除运算,必须用 反引号 `` 括起来
# 2. 整个计算表达式之间必须有三个空格:expr与$a, $a与+,+与$b之间共有三个空格
+: 加法 `expr $a + $b`
-: 减法 `expr $a - $b`
*: 乘法 `expr $a \\* $b`
/: 除法 `expr $a / $b`
%: 取余 `expr $a % $b`
=: 赋值 a=$b 将把变量b的值赋给a
==: 相等 相同则返回true; [ $a == $b ] 返回 false
!=: 不相等 不相等则返回true; [ $a != $b ] 返回 true
-eq: 检查相等 [ $a -eq $b ] 返回false
-ne: 检查不相等 [ $a -ne $b ] 返回true
-gt: 检查左边大于右边 [ $a -gt $b ] 返回false
-lt: 检查左边小于右边 [ $a -lt $b ] 返回true
-ge: 检查左边是否大于等于右边 [ $a -ge $b ] 返回false
-le: 检查左边是否小于等于右边 [ $a -le $b ] 返回false
4. bash与linux的命令组合
1. bash与目录命令
# 下面的命令可以直接卸载一个 .sh文件里面
mkdir test
cd test
echo "hello" > test.txt # 将hello文本重定向写入到test.txt文件
ls
2. bash与内存
# 统计内存使用
ps aux
- 实战
ps aux得到进程号后,提取PID
# 解析
# ps aux | awk:列出所有进程并交个 awk处理
# awk \'{print $2}\': awk根据空格分割,打印出第二列内容,其中首行PID是显示出来的
# grep -v PID: 不显示首行PID
ps aux | awk \'{print $2}\' | grep -v PID
以上是关于4. linux编程语法的主要内容,如果未能解决你的问题,请参考以下文章
linux打开终端如何启动scala,如何在终端下运行Scala代码片段?
在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误