var_name="123" # 变量定义的 = 两边不能有空格,如 var_name = "123" 会报错 echo $var_name # 通过 $变量名 来使用变量
var_only_read="Hello" readonly var_only_read # 通过readonly关键字
unset var_name # 注意:只读变量是不能被删除的 # 如果要删除只读变量,关闭 shell 终端,重新打开就没有了。 因为变量的作用范围就是在当前shell窗口
字符串: 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[@]}"
# 语法 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
# 语法 for var in item1 item2 ...itemN do 指令1 指定2 done
#实例 for i in 1 2 3 4 5 do echo "hello $i" done
# cat test.txt:显示文件内容 # $(cat test.txt): 表示把cat test.txt当做命令执行得到一个结果,然后交给for循环去循环 for line in $(cat test.txt) do echo $line done
# 语法 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
read 命令是用于从终端或者文件中读取输入的内容的 内部命令
,读取的是整行输入,每行末尾的换行符不被读入
read var 键盘输入一个内容, 就会自动赋值给变量var echo $var
read var1 var2 var3
read
脚本是放在.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 直接跟在执行的文件名后面就行
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
# 下面的命令可以直接卸载一个 .sh文件里面 mkdir test cd test echo "hello" > test.txt # 将hello文本重定向写入到test.txt文件 ls
# 统计内存使用 ps aux
# 解析 # ps aux | awk:列出所有进程并交个 awk处理 # awk '{print $2}': awk根据空格分割,打印出第二列内容,其中首行PID是显示出来的 # grep -v PID: 不显示首行PID ps aux | awk '{print $2}' | grep -v PID