shell mysql 数组变量_shell变量、函数和数组以及字符串的截取

一、变量

1.shell变量名

(1)可以由字母、数字、下划线等字符组成。但是第一个字符必须是字母或者下划线。

(2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.tar.gz 和 {$project_svn}_$date.tar.gz。第一个shell理解为$project是一个变量。

2.变量的赋值:

variable=value

note:赋值运算符前后不能有空格,否则会报错。

3.变量分类:

内部变量是为了shell编程的而设定的变量。

本地变量是在代码块或函数中定义的变量,切尽在定义的范围内有效

参数变量是调用shell脚本或执函数传递的时的变量

环境变量是为了系统内核、系统命令和用户命令提供运行环境而设定的变量

用户自定义变量即普通变量或者临时变量

3.1内部变量

PWD:表示当前的工作目录,其变量值等于PWD内部命令的输出。

[centos@s201 ~]$ echo$PWD/home/centos

RANDOM: 每次引用这个变量,将会生成一个均匀分布0-32676 范围内的随机整数

SCONDS:脚本已经运行的时间

PPID:当前进程的父进程的进程ID

$?:表示最近一次执行的命令或者shell脚本的出口状态

3.2环境变量:

EDITOR:

HOME:用户主目录

PATH:指定命令的检索路径

如何将/usr/local/mysql/bin添加到系统默认读取的PATH的变量中?

PATH=$PATH:/usr/local/mysql/bin

note:linux包含两个重要文件 /etc/profile $HOME/.bash_profile 每次系统登入都要读取这两个文件。

5.变量的引用和替换

假设variable是一个变量

$variable 或者 ${variable } 表示使用变量中储存的值用于替换变量本身

note:位于但用双引号中的变量可以替换,位于单引号中变量则不能进行替换。

二、函数

function 函数名()

{

action;

[returm 数值;]

}

具体说明:

1自定义函数既可以用带function 参数的函数名(),也可以直接用函数名()直接定义,而不带任何参数

2参数返回的时候可以显示的加return返回,如果不加,则将一最后一条命令的运行结果作为返回值。return 后跟数值,取值范围0-255

demo遍历某个目录所有文件

#!/bin/bashfunctiontraverse(){for file in `ls $1`do

if [ -d $1"/"$file]thentraverse $1"/"$file

else

echo $1"/"$file

fi

done}

traverse"/home"

三、shell中的数组

(1)定义数组

arr1=(value1...value2)

arr1=(

value1

value2

value3

)

或者单独定义数组的各个分量

arr1[0]=value0

arr1[1]=value1

(3)读取数组

读取数组值的一般格式:

${arr1[index]}

使用@ *可以获取数组中的所有元素:

${arr[*]}

${arr[@]}

获取数组的长度

${#arr[*]}

${#arr[@]}

也可以获取数组中单个元素的长度

${#arr[index]}

[centos@s201 ~]$ arr1=( 1 2 3 4 5 6 7)

[centos@s201~]$ echo ${arr1[1]}2[centos@s201~]$ echo ${arr1[*]}1 2 3 4 5 6 7[centos@s201~]$ echo${arr1[@]}1 2 3 4 5 6 7[centos@s201~]$ echo${#arr1[@]}7[centos@s201~]$ echo ${#arr1[*]}7[centos@s201~]$ echo ${#arr1[1]}1

四、shell中字符串的截取

第一种方法:

从左向右截取最后一个string后的字符串

${variable##*string}

从左向右截取第一个string后字符串

${variable##*string}

从右向左截取最后一个string前的字符串

${variable%%string*}

从右向左截取第一个string前的字符串

${variable%string*}

[centos@s201 ~]$ echo ${a##*"i"}

n

[centos@s201~]$ echo ${a##*i}

n

[centos@s201~]$ echo ${a#*i}

ngbin

[centos@s201~]$ echo ${a%%i}

wangqingbin

[centos@s201~]$ echo ${a%%i*}

wangq

[centos@s201~]$ echo ${a%i*}

wangqingb

第二种方法:

${变量:n1:n2} 截取变量n1开始的n2 个字符。第一位是0

[centos@s201 ~]$ echo ${a:2:4}

ngqn

第三种方法:

ls -al | cut -d "." -f2

ls -al

total1508456drwx------. 47 centos centos 8192 Apr 5 07:07.

drwxr-xr-x. 3 root root 20 Jul 16 2018..-rw-rw-r--. 1 centos centos 0 Jan 9 14:59 1

-rw-rw-r--. 1 centos centos 0 Jan 9 14:35 ]1

-rw-rw-r--. 1 centos centos 0 Jan 9 14:40 1]-rw-rw-r--. 1 centos centos 0 Jan 9 14:38 1]]-rwxrwxr-x. 1 centos centos 81 Jan 9 21:55 1.sh

-rw-rw-r--. 1 centos centos 109 Oct 11 11:31 1.txt-rw-rw-r--. 1 centos centos 52839453 Jul 30 2018 2018-07-01.log

[centos@s201 ~]$ ls -al |cut -d "." -f2

total1508456

47 centos centos 8192 Apr 5 07:07

3 root root 20 Jul 16 2018

1 centos centos 0 Jan 9 14:59 1

1 centos centos 0 Jan 9 14:35 ]1

1 centos centos 0 Jan 9 14:40 1]1 centos centos 0 Jan 9 14:38 1]]1 centos centos 81 Jan 9 21:55 1

1 centos centos 109 Oct 11 11:31 1

1 centos centos 52839453 Jul 30 2018 2018-07-01

[centos@s201 ~]$ ls -al |cut -d "." -f1

total1508456drwx------drwxr-xr-x-rw-rw-r--

-rw-rw-r--

-rw-rw-r--

-rw-rw-r--

-rwxrwxr-x-rw-rw-r--

-rw-rw-r--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值