虽然自己是一名java程序员,做后端的,但是最近工作中经常需要看别人写的脚本去运行项目,所以作为后端程序员,我们也需要了解一下shell语法,会读懂一些基本的shell脚本。
二、脚本定义执行介绍1、bash脚本头部定义可执行环境,定义解释器,其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
#!/bin/bash
2、赋予脚本权限
chmod +x a.sh
3、执行bash脚本
./a.sh
4、查看执行情况
bash -x zhishu.sh
执行后,会显示bash脚本的执行过程,如下,是一个质数脚本的执行过程。
+ read -p 请输入一个数: number 请输入一个数:33 + '[' 33 -eq 1 ']' + '[' 33 -eq 2 ']' ++ seq 2 32 + for i in '`seq 2 $[$number-1]`' zhishu.sh: line 12: %2: syntax error: operand expected (error token is "%2") + echo 33是质数 33是质数
5、快捷键
(1)非insert模式下,执行下面,复制当前行。
yyp
(2)非insert模式下,执行下面,删除光标下面的若干行。
10d
6、转义字符,
(1)在前面加 ,示例,定义了一个变量$0。
echo "read -p "input your name:" name # 打印用户输入内容 echo ${$name}=read -s -p "input your name:" name"
7、脚本里面执行命令不输出
ping -c1 $ip &>/dev/null三、read命令语法
1、、提示用戶輸入
(1)会在控制台显示input your name;,用户输入后会把输入内容赋值给name变量。
$((1+1))
(2) 用戶輸入内容隐藏,-p会将用户输入的参数隐藏,控制台不显示。
$[84*1]四、四则运算
1、共4种运算方式,记住语法可以在脚本中写复杂的运算。
(1)第一种
expr 1 + 1 # 注意空格 expr 10 * 2 #为转义字符
(2)第二种
n=1;let n=n+2;echo $n #结果为3 ln=1;let n=n**3;;echo $n #结果为8
(3)第三种,需要有空格
[[ ]]
4、 let 给变量做计算
[[ ! -d ./dir ]];echo $? #判断是否是个目录,是的话返回0五、条件判断
1、第一种方式,
(1)注意:中括号与计算字段两边需要有空格,否则会报错
[]
(2)示例:
[ -L ./va.sh ];echo $? #判断是否为链接文件,这种方式中括号里面需要空格
2、第二种方式,
(1)中括号与计算字段两边需要有空格,否则会报错
test
(2)示例
test test -f varable.sh #判断是否是文件 test -d dir2;echo $? #判断是否是目录 test varable.sh -nt a.sh;echo $? #判断前面文件是否比后面文件新 test a.sh -ef b.sh ;echo $? #比较两个文件是否是同一个文件 test -z "hello world";echo $? #判断字符串是否为空 1不为空 test -n "hello world";echo $? #判断字符串是否为非空 1不为空 test "hello"="word" ;echo $? #判断两个字符串是否相等 test 1 -eq 2;echo $? #判断1和2是否相等 1为不相等
3、第三种方式
(1)使用test命令
(2)示例:
4、判断数字的选项
5、判断文件的选项
6、字符串判断选项
-a 或者 &&
-o 或者 ||
7、其他命令通过 man test 查看,有string的比较,文件判断等
六、多条件判断1、语法
(1)逻辑与
#判断用户是否是管理员,满足条件打印后面内容 [ $(id -u) -eq 0 ]&& echo “是管理员”
(2)逻辑或
if [ condition ];then command fi
(3)示例
if test condition ;then command else command fi
2、if 结构
(1)语法一
if test condition ;then command elif test condition ;then command else test condition ;then command fi
(2)语法二
#grep -v 'grep' 结果不包含当前命令进程 ps -ef|grep clickhouse|grep -v 'grep';echo $?
(3) 语法三
3、应用案例
(1)判断主机是否ping通
#!/bin/bash read -p 'ping 哪个ip:' ip #脚本里面执行命令不输出 ping -c1 $ip &>/dev/null if [ $? -eq 0 ];then echo 通了 else echo 不通 fi
(2)判断一个进程是否存在, 0为存在,使用ps命令
(3)判断一个进程是否存在, 0为存在,使用pgrep命令
#判断进程是否存在 pgrep clickhouse &>/dev/null test $? -eq 0 && echo "当前clickhouse进程存在" || echo "当前进程不存在"
(4)判断一个用户是否存在
read -p "请输入一个用户:" username id $username &>/dev/null if test $? -eq 0;then echo "$username用户存在" else echo "$username用户不存在" fi七、总结
以上就是就是关于shell语法变量,运算,判断相关所有内容,希望对大家有帮助,可以参考一下,觉得不错的话,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)