shell入门

1. 声明
脚本以 #!/bin/bash 开头 并有执行权限
也可以直接用 sh (脚本文件名) 不需要权限就可运行

2. 变量
定义变量: 变量=值
撤销变量: unset 变量
声明静态变量: readonly 变量 (不可unset)

D=`date` D=$(date) 两种方式把命令的结果赋值给变量

环境变量
vim /etc/profile 打开环境变量配置
TOMCAT_HOME=ZHANGYAGUANG 设置自定义的环境变量(1)
export TOMCAT_HOME 设置自定义的环境变量(2)
source /etc/profile 刷新文件
echo $TOMCAT_HOME 调用

参数变量
$n n为数字 10个以上用${10}
$* 所有参数 一个整体
$@ 所有参数 每个参数区别对待
$# 参数的个数

预定义变量
$$ 当前的PID(进程号)
$! 后台运行的最后的PID
$? 最后一次执行的状态 0:成功 非0:失败

3. 运算
A=$[5+6] 推荐
B=$((5+6))
C=`expr 10 + 1`
D=`expr $1 + $2` 调用命令行的参数

4. 条件判断
整数比较 文件权限 文件类型
例: [ "ok" = "ok" ] [ -r /root/shell/aa.txt ] [ -e /root/shell/aa.txt ]
= 字符串比较 -r 有读的权限 -f 文件存在并且是一个常规文件(隐藏文件)
-lt 小于 -w 有写 -e 文件存在
-le 小于等于 -x 有执行 -d 文件存在并且是一个目录
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

5. if case for while
注: 空格 和 $ 符号不可缺少
if:
if [ $1x == "ab"x ]; then
echo "you had enter ab"
elif [ $1x == "cd"x ]; then
echo "you had enter cd"
else
echo "you had enter unexpected word"
fi

case:
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "全天"
;;
esac

for:
for i in "$@"
do
echo "for遍历= $i"
done

SUN=0
for((i=1;i<=100;i++))
do
SUN=$[$SUN+$i]
done
echo $SUN

while:
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$i+$SUM]
i=$[$i+1]
done
echo $SUM

6. read
语法: read(选项)(参数)
选项 -p 指定读取时的提示符
-t 指定读取时的等待时间,超时就不等待了
例: read -t 5 -p "输入一个数=" NUM1
echo "你输入的数字是= $NUM1"

7. 函数
basename (路径) (后缀) 取文件名
dirname (路径) 取路径

自定义函数
function getNum(){
SUM=$[$i+$y]
echo $SUM
return $SUM
}
read -p "i:" i
read -p "y:" y
X=$(getNum $i $y)
echo "X:$X"

echo 输出
# 单行注释
:<<! 内容 ! 多行注释

原文地址:https://www.cnblogs.com/zygyun/p/9712696.html