从最开始只懂得如何进去服务器系统到后面慢慢了解Linux 的每一个文件的基本含义,到系统的一定了解我没有仔细和系统的了解,总是在零零散散的实践中去求知,没有去看,去敲的代码记住了又忘记了。
shell脚本
一个常见的shell脚本 ,一般都是定义了大量的变量和使用if else fi 以及export 导入其他环境变量。
如果需要执行一个shell脚本,必须先要把该脚本设置为可执行文件,或者通过bash 命令直接执行。
一个标准的shell 需要以#!/bin/bash 开始。 在linux 上 /bin 文件下存放的都是可执行命令。
#!/bin/bash
echo "hello world"
执行脚本
bash helloworld.sh
脚本中最常见的语句
在一个脚本中最常用的一般就三个 一个是
-
if else if
-
常用变量
-
for do done
站在一个java 开发者的角度看shell 脚本是相当头痛的事情, 看到 “” 和 ‘’ 完全是不一样的,在shell 脚本中有大量的获取变量的方式和如 $ 、`` 、 ( ) 、 () 、 ()、{}
# 表示为一个注释
test=1 #给变量赋值
echo $test # 可以输出
echo "$test" #也可以输出
echo '$test' # 这个只能输出引号里面的字符串
echo ${test} #还是可以输出
echo $(test) #这个就输出不出来了,这个只能输出对应的命令 如下
echo $(hostname) #这样类型的信息
echo $(ps)
还有一个就是 字符的判断 ,test [ ] 这个两个东西都是可用于判断的。 下面的两个代码是一样的
# 判断1==1 为对的就输出 Y 否在输出 N
test 1==1 && echo Y || N
[ 1 -eq 1 ] && echo Y || N
[ 1 == 1 ] && echo Y || N
用 [ ] 来进行判断 存在很多参数 如 针对于数字进行判断的
符号 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于或等于 |
-lt | 小于 |
-le | 小于或等于 |
针对于文件进行判断的
符号 | 含义 |
---|---|
-e file | 文件是否存在 |
-f file | 存在且为普通文件 |
-d file | 存在并且为目录 |
-b file | 存在并且为块设备文件 |
-c file | 存在并且为字符设备文件 |
-p file | 存在且文件命名管道 |
-L file | 存在且为软链接文件 |
-r file | 存在且文件具有可读权限 |
-x file | 存在且文件具有可执行权限 |
-w file | 存在且文件具有可写入权限 |
-s file | 存在且文件为非空 |
if 分支
相比起变量,if分支容易懂一些 基本语法如下
if 条件测试 ;
then
#正确的命令
fi
if 条件语句 ;
then
# 正确的命令
else
# 错误的命令
fi
在判断的时候 大多数都是使用 test 和 [] 来进行判断的,如下
#!/bin/bash/
if [ -e /usr/local/test.txt ];
then
echo "文件存在!"
else
echo "文件不存在!"
fi
如果文件存在 就会在控制台进行输出 “文件存在” ,不存在就会输出不存在。
for 循环
for循环 的差异性也不是特别大 如下
for name in [ word ... ]
do
# 命令代码
done
name 为自定的变量 [ word ] 为某些集合 数组
#!/bin/bash
for i in 1 2 3 4 5
do
echo $i
done
输出 1 2 3 4 5 $i 就是代表了 in 的1 2 3 4 5 这些数字。
也存在着以下这种情况,没有in 参数 直接输出 这样的语法格式也是不会报错的。 默认取值为$@ 通过执行脚本的传参。
for i
do
echo $i
done
以上是自己对于shell脚本的简单认识 和总结。