(11)centos7 shell

一、变量

1.系统变量

echo $PATH #环境变量

echo $USER #当前用户

echo  $HOME #

2.自定义变量

  • 变量名称一般用大写
  • 等号两侧不能有空格
  • 静态变量不能被unset
A=100 #定义变量,

unset A #销毁变量

readonly B  #定义静态变量,

echo $A  #使用变量$

指令赋值给变量

a1=$(ls -a)  #使用$(),这个指令有的linux不兼容
a2=`ls -a`  #或者使用 ``

echo $a1
echo $a2

3.位置参数变量

#!/bin/bash
echo "输入参数个数共:$# 个"
echo "全部参数1是:$0 , 参数2是:$1"
echo "输入参数为:$@"
echo "输入参数为:$*"

4.预定义变量

$$ #获取当前进程号
$! # 后台运行的最后一个进程号
$? #返回最后一次命令的状态,0表示成功,

二、运算符

$()

echo $(((2+3)*4))

$[]    ** 两个()等于一个[]

echo $[(2+3)*4]

expr

用expr时符号两边必须要有空格

echo `expr 2 + 3`

乘号 

需要加

echo `expr 2 * 3`

比较运算符

数字的比较: 
-eq 相等(equal) 
-ne 不等(not equal) 
-gt 大于(greater than) 
-lt 小于(less than) 
-ge 大于等于 (greater than or equal) 
-le 小于等于 (less than or equal)

字符串的比较: 
[ $str1 = $str2 ] 等于 
[ $str1 != $str2 ] 不等于 
[ -z $str ] 空字符串返回true 
[ -n $str ] 或者 [ $str ] 非空字符串返回true

文件

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

三、判断

 1 if

#!/bin/bash

if [ $1 -gt 15  ]
then
        echo "大于"
elif [ $1 -lt 15 ]
then
        echo "小于"
else
        echo "等于"
fi

 2 case

#!/bin/bash

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
esac

四、循环

1. for循环

#!/bin/bash

for i in "$*"
do
        echo "$i"
done

echo "*********************"

for j in "$@"
do
        echo "$j"
done

2.for循环

#!/bin/bash


for (( i=0 ; i<$1 ; i++))
do
echo "print $i"
done

 

3.while 

#!/bin/bash

while [ "$1" ]
do
        echo "$1"
done

五、函数

1.系统函数

(1)basename 获取文件全路径下的文件名

[root@VM_0_2_centos ~]# basename /root/test.txt
test.txt

(2)dirname 获取文件全路径的路径部分

[root@VM_0_2_centos ~]# dirname /root/test.txt
/root

2.自定义函数

#!/bin/bash
getSum(){
        SUM=$[$n1+$n2]
        echo "求和:$SUM"
}

read -p "输入参数1:" n1
read -p "输入参数2:" n2

getSum $n1 $n2

六、其他

1读取控制行

#!/bin/bash

read -p "请输入:" NUM1
echo "输出: $NUM1"

原文地址:https://www.cnblogs.com/buchizaodian/p/7082648.html