学习之shell脚本

做~自己de王妃 提交于 2020-02-25 11:40:44

第一行:#!/bin/bash  --> #! 标记脚本的解释器

脚本: #!/bin/bash

    echo "hello world"

赋予执行权限 chmod +x ./test.sh

执行脚本:./test.sh

定义变量时不需要 $ 符号 :td='date "+%y%m%d"'

1.变量名和符号之间不能有空格
2.首个字符必须为字母
3.中间不能有空格,可以使用划线(_)
4.不能使用标点符号和 bash 中的关键字

除了显示赋值,还可用语句直接给变量赋值

for file in 'ls /etc' 将 /etc目录下的文件名循环出来

使用一个定义过的变量,只需在变量名前加上 $ 符号即可 echo $td 或 echo ${td}

对同一个变量名,可以进行二次赋值 eg: td='date "+%m%d"'

只读变量:readonly 定义变量为只读变量,变量值不可更改

url="http://www.baidu.com"

readonly url

url="http://www.tx.com" --> 报错

删除变量: unset variable_nae,不能删除只读变量

shell存在三种变量:①局部变量:脚本或命令中定义,仅在当前脚本有效
          ②环境变量:所有程序有效
          ③shell变量:由shell程序设置的变量,有局部也有环境

单引号字符串中不能有变量,不能做字符转义,双引号可以实现。

your_name="world"

拼接字符串 greeting="hello,${your_name} !" 

获取字符串长度 ${#greeting} 

提取1—4的字符串,下标从0开始 ${#greeting:1:4} 

查找字符串 $(expr index "${greeting}" world)

反引号用于命令替换:td=`date "+%y%m%d"` 等同于 $(date "+%y%m%d")

./test.sh 1 2 3

执行的文件名:$0  --> ./test.sh

第一个参数为:$1  --> 1

第二个参数为:$2  --> 2

第三个参数为:$3  --> 3

参数的个数为:$# --> 3

脚本运行的当前进程ID:$$ -->8010

显示所有传递的参数:$*  -->1 2 3

$* 与 $@ 的区别:$* 等价于 “1 2 3” ,相当于传递了一个参数,$@ 等价于 “1” “2” “3” 相当于传递了三个参数

shell数组:array_name=(value1 ... valuen) --> my_array=(A B "C" D)

读取数组元素:${array_name[index]}

获取所有数组元素: ${array_name[*]} 或 ${array_name[@]} 

获取数组长度: ${#array_name[*]} 或 ${#array_name[@]} 

Shell 基本运算符:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!