Error[8]: Undefined offset: 43, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

shel脚本基础系列(二)语法+运算+判断 一、背景

        虽然自己是一名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命令

-eq等于

(2)示例:

-ne不等于

4、判断数字的选项

-gt大于-lt小于-ge大于等于-le小于等于-d是否是个目录-f是否是文件

5、判断文件的选项

-e是否存在-ef两个文件是否相等-w一个文件是否可写-L是否有链接文件-s判断一个文件是否为非空! -s判断文件内容为空-z判断字符串是否为空-n判断字符串是否为非空

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基础笔记,后面会不断更新相关知识,大家一起进步。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 44, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

shel脚本基础系列(二)语法+运算+判断 一、背景

        虽然自己是一名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命令

-eq等于

(2)示例:

-ne不等于

4、判断数字的选项

-gt大于-lt小于-ge大于等于-le小于等于-d是否是个目录-f是否是文件

5、判断文件的选项

-e是否存在-ef两个文件是否相等-w一个文件是否可写-L是否有链接文件-s判断一个文件是否为非空! -s判断文件内容为空-z判断字符串是否为空-n判断字符串是否为非空

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基础笔记,后面会不断更新相关知识,大家一起进步。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
shel脚本基础系列(二)语法+运算+判断_随笔_内存溢出

shel脚本基础系列(二)语法+运算+判断

shel脚本基础系列(二)语法+运算+判断,第1张

shel脚本基础系列(二)语法+运算+判断 一、背景

        虽然自己是一名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命令

-eq等于

(2)示例:

-ne不等于

4、判断数字的选项

-gt大于-lt小于-ge大于等于-le小于等于-d是否是个目录-f是否是文件

5、判断文件的选项

-e是否存在-ef两个文件是否相等-w一个文件是否可写-L是否有链接文件-s判断一个文件是否为非空! -s判断文件内容为空-z判断字符串是否为空-n判断字符串是否为非空

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基础笔记,后面会不断更新相关知识,大家一起进步。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5693897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存