概述
shell脚本编写规范
echo:可在屏幕上输出信息
echo参数选项 | 说明 |
-n | 不换行输出内容 |
-e | 解析转义字符 |
转义字符 | 说明 |
n | 换行 |
r | 回车 |
t | 制表符 |
b | 退格 |
v | 纵向制表符 |
[root@localhost test]# echo -n i have a cat
i have a cat[root@localhost test]#
[root@localhost test]# echo ithavetatcat
ithavetatcat
[root@localhost test]# echo -e ithavetatcat
ithavetatcat
[root@localhost test]# echo -e "ithavetatcat"
i have a cat
[root@localhost test]# echo -n {1..6}
1 2 3 4 5 6[root@localhost test]#
eval:命令格式:eval args
[root@localhost test]# a='shell;head -1 /etc/passwd'
[root@localhost test]# echo $a
shell;head -1 /etc/passwd
[root@localhost test]# eval echo $a
shell
root:x:0:0:root:/root:/bin/bash
exec:exec命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了。
[root@localhost test]# exec cd /home
Connection closed.
Disconnected from remote host(192.168.10.128:22) at 20:03:30.
Type `help' to learn how to use Xshell prompt.
[C:~]$
export
[root@localhost test]# export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x DISPLAY="localhost:10.0"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/root"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root/test"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_CLIENT="192.168.10.1 54521 22"
declare -x SSH_CONNECTION="192.168.10.1 54521 192.168.10.128 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TC_LIB_DIR="/usr/lib64/tc"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="8"
declare -x which_declare="declare -f"
read:read命令可从标准输入读取字符串等信息,传给shell程序内部定义的变量。
[root@localhost test]# read -p "please input a string: " -t 5 str_data
please input a string: lili
[root@localhost test]# echo $str_data
lili
[root@localhost test]# echo -n "please input your name:"; read name1 name2
please input your name:haha hehe
[root@localhost test]# echo $name1
haha
[root@localhost test]# echo $name2
hehe
[root@localhost test]#
[root@localhost test]# read name1
xian
[root@localhost test]# echo $name1
xian
[root@localhost test]# vim shift_test.sh
[root@localhost test]# bash shift_test.sh 123 456
2
[root@localhost test]# bash 8.17.sh 123 456
2
123 456
8.17.sh
123
1
456
反引号 $(): 显示当前工作路径
[root@localhost test]# data=`pwd`
[root@localhost test]# echo $data
/root/test
[root@localhost test]# data=$(pwd)
[root@localhost test]# echo $data
/root/test
exit:退出shell程序。在exit之后可以有选择地指定一个数作为返回状态
[root@localhost test]# vim exit_test.sh
[root@localhost test]# bash exit_test.sh
222
代码缩进
[root@localhost test]# vim ~/.vimrc
执行脚本的方法
[root@localhost test]# vim test_1.sh
#!/bin/bash
cd /tmp
pwd
[root@localhost test]# ls -l test_1.sh
-rw-r--r--. 1 root root 23 Aug 17 11:20 test_1.sh
1、bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行)
[root@localhost test]# bash test_1.sh
/tmp
2、./filename.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x权限)
[root@localhost test]# chmod +x test_1.sh
[root@localhost test]# ./test_1.sh
/tmp
3、source ./filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到当前的shell里面)
[root@localhost test]# source test_1.sh
/tmp
4、. filename.sh(和source一样,也是使用当前进程执行)
[root@localhost test]# . test_1.sh
/tmp
变量的类型
-p :显示所有变量的值-i :将变量定义为整数,在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为 0 。-r :将变量声明为只读变量。只读变量不允许修改,也不允许删除。 ( 也可使用 readonly 定义只读变量 )-a :变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。事实上,在某种意义上,似乎所有变量都是数组,而且赋值给没有下标的变量与赋值给下标为 0 的数组元素相同。-f :显示所有自定义函数,包括名称和函数体。-x :将变量设置成环境变量。可使用 +x 将变量变成非环境变量
根据作用域分类
1、环境变量
(2)bash内置的环境变量
shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接收一组变量 来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。环境变量会影响到所 有的脚本的执行结果。
变量
|
说明
|
PATH
|
命令搜索路径,以冒号为分隔符
|
HOME
|
用户主目录的路径名,是
cd
命令的默认参数
|
COLUMNS
|
定义了命令编辑模式下可使用命令行的长度
|
HISTFILE
|
命令历史文件
|
HISTSIZE
|
命令历史文件中最多可包含的命令条数
|
HISTFILESIZE
|
命令历史文件中包含的最大行数
|
IFS
|
定义
shell
使用的分隔符
|
LOGNAME
|
当前的登录名
|
SHELL
|
shell
的全路径名
|
TERM
|
终端类型
|
TMOUT
|
shell
自动退出的时间,单位为秒,若设为
0
则禁止
shell
自动退出
|
PWD
|
当前工作目录
|
2、普通变量
区别
[root@localhost ~]# vim 6.sh
#!/bin/bash
#定义函数
func()
{
#输出全局变量v1的值
echo "global variable v1 is $v1"
#定义局部变量v1
local v1=2
#输出局部变量v1的值
echo "local variable v1 is $v1"
}
#定义全局变量v1
v1=1
#调用函数
func
#输出全局变量v1的值
echo "global variable v1 is $v1"
[root@localhost test]# chmod a+rx var.sh
[root@localhost test]# ./var.sh
global variable v1 is 1
local variable v1 is 2
global variable v1 is 1
变量的定义
变量 | 说明 |
$#
|
命令行参数的个数
|
$n
|
表示传递给脚本的第
n
个参数,例如
$1
表示第一个参数,
$2
表示第二个参数,
$3
表示第三 个参数
|
$0
|
当前脚本的名称
|
$*
|
以
"
参数
1
参数
2
参数
3…"
的形式返回所有参数的值
|
$@
|
以
“
参数
1”“
参数
2”“
参数
3”…
的形式返回所有的值
|
$?
|
前一个命令或者函数的返回状态码。
$?
的返回值用法:
(1)判断命令、脚本或函数等程序
是否执行成功
(2)若在脚本中调用执行
“exit
数字
”
,则会返回这个数字给
“$?”
变量
(3)如 果是在函数里,则通过“return
数字
”
把这个数字以函数值的形式传给
“$?”
|
$$
|
返回本程序的进程
ID
(
PID
),不常用
|
$!
|
获取上一个在后台工作的进程的进程号,不常用
|
$_
|
保存之前执行的命令的最后一个参数,不常用
|
例:
[root@localhost tmp]# vim test_2.sh
#!/bin/bash
#########################
#File name:test_2.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2022-08-17 11:51:47
#Description:
#########################
echo $#
echo $@
echo $*
echo $0
echo $1
echo $2
echo $?
[root@localhost tmp]# bash test_2.sh 985 211
2
985 211
985 211
test_2.sh
985
211
0
变量的运算
运算符 | 说明 |
+
、
-
|
求和、差
|
*
、
/
、
%
|
求乘积,商,余数
|
**
|
幂运算,例如
3**3
是求
3
的立方,即
27
|
+=
、
-=
、 *=、
/=
、
%=
|
例
a+=1
相当于
a=a+1
|
++variable
、
- -variable
|
先将变量
variable
的值加
1
,然后再赋给
variable
; 先将变量
variable
的值减
1
, 然后再赋给variable
|
variable++
、 variable--
|
先使用
variable
的值,然后再将该变量的值加
1
; 先使用
variable
的值,然后再 将该变量的值减1
|
位运算符
<<
、 >>
|
位运算通常出现在整数间,它针对的不是整个整数,而是其二进制表示形式中的 某个或者某些位(bit
)。例如,
2>>1
是将二进制形式的
2
,即
10
,左移
1
位,从 而变成100
,即
4
。 左移,
4<<2
,将
4
左移
2
位,结果为
16
; 右移,
8>>2
,将
8 右移两位,结果为2
|
&
、
|
、
~
、
^
|
按位与,
8&4
,将
8
和
4
进行按位与运算,结果为
0
; 按位或,
8|4
,将
8
和
4
进行 按位或运算,结果为12
; 按位非,
~8
,将
8
进行按位非运算,结果为
-9
(一个字 符占一个字节,即8
个二进制位,最高位为
1
时为负数); 按位异或(a异或
b
, a、
b
值不同结果为
1
,相同结果为
0
),
10^6
,将
10
和
6
进行按二进制位异或运 算,结果为12
。
|
<<=
、
>>=
|
将变量的值左移指定位数之后重新赋给该变量,
x<<=3
,将
x
的值左移
3
位,重新 赋给变量x
; 将变量的值右移指定位数之后重新赋给该变量,
x>>=4
,将变量
x
的 值右移4
位后重新赋给变量
x
。
|
&=
、
|=
、
^=
|
将变量的值与指定的数值按位与之后重新赋给该变量
x&=8
,将变量
x
的值与
8 按位与运算之后重新赋给变量x
; 将变量的值与指定的数值按位或之后重新赋给 该变量,x|=7
,将变量
x
的值与
7
执行按位或运算之后重新赋给变量
x
; 将变量的 值与指定的数值按位异或之后重新赋给该变量,x^=9
,将变量
x
的值与
9
执行按 位异或运算之后重新赋给变量x
。
|
作符与
运算命
令
|
运算命令意义
| 说明 |
(()) |
用于整数运 算的常用运 算符
|
在
(())
中使用变量时可以去掉变量前的
$
符号
|
let |
用于整数运 算
|
使用
let
命令可以执行一个或者多个算术表达式,其中的变量名毋需使用$
符号
|
expr |
可用于整数 运算,但还 有很多其他 的额外功能
|
使用
expr
时,运算符及用于计算的数字左右都至少有一个空格,否则
会报错;使用乘号时,必须使用反斜线屏蔽其特定含义;使用
expr
做
计算,将一个未知的变量和一个已知的整数相加,看返回码是否为
0
,如果为
0
就认为做加法的变量为整数,否则就不是整数。
|
bc |
linux
下的一 个计算器程 序(适合整 数及小数运 算)
|
[root@node13 test9]# echo `seq -s "+" 10` = `seq -s "+" 10 | bc
`
seq
是生成数字序列,
-s
是指定数字序列之间的分隔符
|
$[]
|
用于整数运 算
| |
awk
|
awk
既可以 用于整数运 算,也可以 用于小数运 算
| |
declare
|
定义变量值 和属性,-i 参数可以用 于定义整形 变量,做运 算
|
[root@localhost 20220816]# vim 1.sh
[root@localhost 20220816]# bash 1.sh 6 2
num1+num2=8
4
3
12
8
[root@localhost 20220816]# declare -i r=1+5
[root@localhost 20220816]# echo $r
6
表达式
| 说明 |
${parameter}
|
返回变量的内容
|
${#parameter}
|
返回变量内容的长度(按字符)
|
${paramater:offset}
|
在变量
${parameter}
中,从位置
offset
之后开始提取子串到结 尾
|
${paramater:offset:length}
|
在变量
${parameter}
中,从位置
offset
之后开始提取长度为 length的子串
|
${parameter#word}
|
从变量
${parameter}
开头开始删除最短匹配的
word
子串
|
${parameter##word}
|
从变量
${parameter}
开头开始删除最长匹配的
word
子串
|
${parameter%word}
|
从变量
${parameter}
结尾开始删除最短匹配的
word
子串
|
${parameter%%word}
|
从变量
${parameter}
结尾开始删除最长匹配的
word
子串
|
${parameter/pattern/string}
|
使用
string
代替第一个匹配的
pattern
|
${parameter//pattern/string}
|
使用
string
代替所有匹配的
pattern
|
${#parameter} :返回变量内容的长度(按字符)
[root@localhost 20220816]# str1="nice to meet you"
[root@localhost 20220816]# echo ${#str1}
16
${parameter#word} :从变量${parameter}开头开始删除最短匹配的word子串
[root@localhost 20220816]# filename=testfile.tar.gz
[root@localhost 20220816]# file=${filename#*.}
[root@localhost 20220816]# echo $file
tar.gz
${parameter##word} :从变量${parameter}开头开始删除最长匹配的word子串
[root@localhost 20220816]# filename=testfile.tar.gz
[root@localhost 20220816]# file=${filename##*.}
[root@localhost 20220816]# echo $file
gz
${parameter%word}: 从变量${parameter}结尾开始删除最短匹配的word子串
[root@localhost 20220816]# filename=testfile.tar.gz
[root@localhost 20220816]# file=${filename%.*}
[root@localhost 20220816]# echo $file
testfile.tar
${parameter%%word}: 从变量${parameter}结尾开始删除最长匹配的word子串
[root@localhost 20220816]# filename=testfile.tar.gz
[root@localhost 20220816]# file=${filename%%.*}
[root@localhost 20220816]# echo $file
testfile
${paramater:offset}: 在变量${parameter}中,从位置offset之后开始提取子串到结
[root@localhost 20220816]# str1="nice to meet you"
[root@localhost 20220816]# echo ${str1:1}
ice to meet you
[root@localhost 20220816]# echo ${str1:3}
e to meet you
[root@localhost 20220816]# str1="nice to meet you"
[root@localhost 20220816]# echo ${str1:1:3}
ice
[root@localhost 20220816]# echo ${str1:0:3}
nic
三、Shell条件测试
3.1条件测试的基本语法
3.2逻辑操作符
3.3文件测试表达式
1、 test示例:test命令和<测试表达式>之间至少有一个空格
[root@localhost 20220823]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 23 15:07 file1
drwxr-xr-x. 2 root root 6 Aug 23 15:04 test1.sh
[root@localhost 20220823]# test -f file1;echo $?
0
[root@localhost 20220823]# test -f file2;echo $?
1
[root@localhost 20220823]# test -x file2;echo $?
1
2、[]示例:该方法和test命令的用法一样,[]的边界和内容之间至少有一个空格
[root@localhost 20220823]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 23 15:07 file1
[root@localhost 20220823]# [ -f file1 ];echo $?
0
[root@localhost 20220823]# [ -f file2 ];echo $?
1
[root@localhost 20220823]# [ -w file1 ];echo $?
0
3、示例:比test和[]更新的语法格式。[[]]的边界和内容之间至少有一个空格。[[]]中可
[root@localhost 20220823]# [[ -f file1 ]];echo $?
0
[root@localhost 20220823]# [[ -f file2 ]];echo $?
1
[root@localhost 20220823]# [[ -x file1 ]];echo $?
1
[root@localhost 20220823]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 23 15:07 file1
3.4字符串测试表达式
1、test示例
[root@localhost test3]# test -n abc;echo $?
0
[root@localhost test3]# test -n "";echo $?
1
[root@localhost test3]# test -n " ";echo $?
0
[root@localhost test3]# test -z '';echo $?
0
[root@localhost test3]# test -z abc;echo $?
1
[root@localhost test3]# test -z ' ';echo $?
1
[root@localhost test3]# test abc = abcd ;echo $? #注意等号两边需要有空格
1
[root@localhost test3]# test abc=abcd ;echo $?
0
2、[]示例
[root@localhost test3]# [ -n '' ];echo $?
1
[root@localhost test3]# [ -n ' ' ];echo $?
0
[root@localhost test3]# [ -z '' ];echo $?
0
[root@localhost test3]# [ abc=abcd ];echo $?
0
[root@localhost test3]# [ abc = abcd ];echo $? #注意等号两边需要有空格
1
3、[[]]示例
[root@localhost test3]# [[ -n abc ]];echo $?
0
[root@localhost test3]# [[ -n ' ' ]];echo $?
0
[root@localhost test3]# [[ -n '' ]];echo $?
1
[root@localhost test3]# [[ abc=acd ]] ;echo $?
0
[root@localhost test3]# [[ abc = acd ]] ;echo $? #注意等号两边需要有空格
1
[root@localhost test3]# test -n $name;echo $?
0
[root@localhost test3]# test -n "$name";echo $?
1
[root@localhost test3]# [ -n $name ];echo $?
0
[root@localhost test3]# [ -n "$name" ];echo $?
1
3.5整数测试表达式
1、test示例
[root@localhost 20220823]# test 2 -eq 9;echo $?
1
[root@localhost 20220823]# test 2 -eq 2;echo $?
0
2、[]示例
[root@localhost 20220823]# [ 2 -ne 1 ];echo $?
0
[root@localhost 20220823]# [ 2 -ne 2 ];echo $?
1
3、[[]]示例: 在[[]]中也可使用包含-gt和-lt的符号,不建议使用;
[root@localhost test3]# [[ 2 != 3 ]];echo $?
0
[root@localhost test3]# [[ 2 != 2 ]];echo $?
1
[root@localhost test3]# [[ 2!=2 ]];echo $? 未写空格,导致出错 0
0
4、(())示例
[root@localhost test3]# (( 2!=3 ));echo $?
0
[root@localhost test3]# ((2!=3));echo $?
0
[root@localhost test3]# ((2=3));echo $?
-bash: ((: 2=3: attempted assignment to non-variable (error token is "=3")
1
[root@localhost test3]# ((2==3));echo $?
1
[root@localhost test3]# ((2>3));echo $?
1
[root@localhost test3]# ((2<3));echo $?
0
3.5 逻辑操作符
1、test示例
[root@localhost test3]# ll
total 0
drwxr-xr-x. 2 root root 6 Feb 20 11:47 ceshi
-rw-r--r--. 1 root root 0 Feb 20 10:46 file
[root@localhost test3]# test -f file && echo 1 ||echo 0
1
[root@localhost test3]# test -f file1 && echo 1 ||echo 0
0
[root@localhost test3]# ! test -f file;echo $?
1
四、流程控制之条件判断
4.1 if条件语句的语法及案例
判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor_id一行中。
[root@localhost 20220823]# vim vendor.sh
[root@localhost 20220823]# chmod +x vendor.sh
[root@localhost 20220823]# ./vendor.sh
unknow
[root@localhost 20220823]# cat vendor.sh
#!/bin/bash
vendor=$(grep "vendor_id" /proc/cpuinfo | uniq|awk -F: '{print $NF}' )
if [[ "$vendor" =~ [[:apace:]]*GenuineIntel]$ ]]
then
echo "intel"
elif [[ "$vendor" =~ [[:apace:]]*AuthenticAMD$ ]]
then
echo "AMD"
else
echo "unknow"
fi
根据用户输入成绩,判断优良中差(A,B,C,D, 注意边界问题)
[root@localhost 20220823]# vim file1.sh
[root@localhost 20220823]# bash file1.sh
please input your score99
A
[root@localhost 20220823]# bash file1.sh
please input your score82
B
[root@localhost 20220823]# bash file1.sh
please input your score66
C
[root@localhost 20220823]# bash file1.sh
please input your score30
D
判断 sshd 进程是否运行,如果服务未启动则启动相应服务。
[root@localhost 20220823]# ps -ef | grep ssh | grep -v grep | wc -l
3
[root@localhost 20220823]# ss -lntup | grep -w 22 | wc -l
2
[root@localhost 20220823]# netstat -lntup | grep -w 22 | wc -l
2
[root@localhost 20220823]# vim sshd_running.sh
[root@localhost 20220823]# cat sshd_running.sh
#!/bin/bash
result=`ps -ef | grep sshd | grep -v grep | wc -l`
if [$result -ge 1 ];then
echo sshd is running
else
echo sshd is not running
systemctl start sshd >/dev/null
fi
[root@localhost 20220823]# chmod a+rx sshd_running.sh
[root@localhost 20220823]# ./sshd_running.sh
./sshd_running.sh: line 3: [5: command not found
sshd is not running
[root@localhost 20220823]# vim ping.sh
[root@localhost 20220823]# chmod +x ping.sh
[root@localhost 20220823]# ./ping.sh
host 192.168.10.128 is not running
[root@localhost 20220823]# cat ping.sh
#!/bin/bash
ping -c 2 -w 1 192.168.10.128 &> /dev/null
if [ $? -eq 0 ];then
echo host 192.168.10.128 is running
else
echo host 192.168.10.128 is not running
fi
最后
以上就是结实硬币为你收集整理的shell三、Shell条件测试四、流程控制之条件判断的全部内容,希望文章能够帮你解决shell三、Shell条件测试四、流程控制之条件判断所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复