linux shell操作-基本脚本编写

文章目录

  • 变量
  • 分支
  • 循环
  • 函数
  • 函数案例

变量

  • 普通变量
    • 声明变量,直接赋值,同python
    • =两边不能有空格
    • ‘’ 单引号表示纯字符
    • “”双引号表示一个整体
    • ``反引号表示操作命令
    • 末尾没有;号
# 直接赋值,
name='jack'  # 纯字符
pyCode='import os\nimport csv\n xxxx'
# -e 识别转义字符,输出到文件中
echo -e $pyCode > content.txt  # $符引用变量的值
state="name is jack, current dir $(pwd)" # 必须带括号
echo -e $state >> content.txt    
  • 环境变量
    • 配置环境变量,以使linux操作系统可以使用。
    • 当前用户下的环境变量
# 编辑文件
vim  ~/.bashrc

# 配置环境变量
export PATH=$PATH:/home/xxx/py
export LD_LIBRARY_PATH=XXXX

# 保存后,使用变量生效
source ~/.bashrc
  • 全局的环境变量
# edit
vim /etc/profile
# config
export PATH=$PATH:/home/xxx/py

# enable
source /etc/profile
  • 命令行变量
    • shell 脚本命令行
    • 函数的参数
# 执行shell脚本,传参
$ sh laufing.sh param1 param2
# 脚本中使用$1  $2 ....$9..${10}
# 获取参数个数 $#
# 获取所有的参数 $* / $@
# $?上一条指令的执行结果 0表示成功

# 定义函数 类js
function func(){
	echo $1
	echo $2
}
# 执行函数
func param1 param2

 

分支

  • test xxx,表示测试条件,成功返回true
  • 数值比较
    • -eq 等于
    • -gt 大于
    • -lt 小于
    • -ge 大于等于
    • -le 小于等于
  • 字符串比较
    • = 相同
    • != 不同
    • -z 长度为0
  • 文化目录的判断
    • -e 文件或者目录是否存在
    • -f 存在且为文件
    • -d 存在且为目录
    • -r 文件存在且可读
    • -w 文件存在且可写
    • -x 可执行
# test判断语句
if test 5 -gt 3;then
	echo "true"
fi # 结束
 
# [] 也表示测试语句,必须有空格
if [ $1 = '' ];then
	echo "no params"
elif [ $1 = 'lauf' ] || [ $1 = 'tom' ];then
	echo "lauf or tom params"
else
	echo "other params"
fi

&& || 连接多个测试条件,
! 条件内部取反

循环

# 循环数组, 闭区间
for i in {1..5};do
	echo $i
done

# 变量目录下的文件
curDir=`ls $(pwd)` # 数组
for i in $curDir  # 引用数组
do
	echo $i
done

函数

shell定义数组特别简单,类似js。

function func1(){
	echo $1  # 打印第一个参数
}

# 函数调用,并传参
func1 "tom" 4

函数案例

递归实现每个目录下添加文件。
linux shell操作-基本脚本编写_第1张图片

创建lauf.sh脚本

#!/bin/bash

function addFile(){
	if [ -d $1 ];then
		echo "add file for $1"
		touch "$1/lauf.txt"
		# recursive
		dealDir $(pwd)/$1
	fi
}

function dealDir(){ # need absolute path
    cd $1
	curFiles=`ls $1`
	for i in $curFiles;do
	    addFile $i
	done
}

# sh lauf.sh /home/laufing/aa
dealDir $1

 

你可能感兴趣的:(linux,linux,运维,服务器)