下面表格中是返回值对应着退出状态的解释: $?特殊变量 shell中的变量名$?是一个特殊的内置变量,可以获取最后一次执行命令的退出状态。 在执行shell函数后,$?返回函数中最后一次执行命令的退出状态。 在执行shell脚本后,$?返回脚本中最后一次执行命令的退出状态。 包含退出状态的脚本实例 以下exit_status.sh脚本显示了几种退出状态: [root@localhost scripts]# vim exit_st...
示例1:使用 $*和$@ 来扩展位置参数 本实例脚本中使用$*和$@参数: [root@localhost scripts]# vim expan.sh #!/bin/bash export IFS='-' cnt=1 # Printing the data available in $* echo "Values of "$*":" for arg in "$*" do echo "Arg #$cnt= $arg" let "cnt+=1" done cnt=1 # Printing the data available in $@ echo "Values of "$@":" for arg ...
环境 Centos8 安装shc [root@localhost ~]# yum -y install shc 创建一个shell脚本 下面创建一个脚本文件: [root@localhost ~]# vim welcome.sh #!/bin/sh echo "Welcome to linux world" 使用shc加密该脚本文件 如下所示,使用shc加密welcome.sh脚本。 [root@localhost scripts]# shc -v -f welcome.sh shc shll=sh shc [-i]=-c shc [-x]=exec '%s' "$@" shc [-l...
终止所有用户会话 下面的shell脚本将通过获取用户会话的tty值来终止所有用户的活动会话,并使用pkill命令将其终止: [root@localhost ~]# vim kill-user-sessions.sh #!/bin/bash usession=$(w | awk '{if (NR!=1) {print $2 }}' | tail -n +2) for i in $usession do pkill -9 -t $i done 给脚本加上可执行权限: [root@localhost ~]# chmod +x kill-user-sessions...
1.声明一个数组并赋值 在bash中,使用以下格式的变量时会自动创建数组: name[index]=value name 是数组的名字。 index 可以是任何数字或表达式,值必须等于或大于零。 要访问数组元素,请使用大括号,例如${name[index]}。下面是访问Unix数组中的第二个元素,以为数组索引从0开始,所以Unix[1]就是第二个元素了。 [root@localhost ~]# cat arraymanip.sh #! /bin/bash Unix[...
系统环境 Centos7 1)检查可用的网络接口 使用ip和awk命令,过滤出状态为UP的网络接口。 [root@localhost ~]# ip ad|awk '/state UP/ {print $2}' ens33: ens38: 2)查看网络接口的IP地址 使用下面命令过滤出每个接口的ip地址: [root@localhost ~]# ip -o addr |awk '/inet/{print $2,$4}' lo 127.0.0.1/8 lo ::1/128 ens33 192.168.43.138/24 ens33 fe80::214e:53b4:43...
方法一、使用输入重定向 逐行读取文件的最简单方法是在while循环中使用输入重定向。 为了演示,在此创建一个名为“ mycontent.txt”的文本文件,文件内容在下面: [root@localhost ~]# cat mycontent.txt This is a sample file We are going through contents line by line to understand 创建一个名为“ example1.sh”的脚本,该脚本使用输入重定向和循环: [root@localhost...
如果你删除用户时,该用户有许多进程正在进行,你是不是要一个个kill掉再删除; 如果你成功删除该用户后,系统中还有需要改用户的文件是不是还要删除。 如上,岂不麻烦。下面的脚本可以帮你快速删除一个或多个用户。 #!/bin/bash #delete user from system #by slitobo 2017/6/2 #check user is root [ `id -u` -ne 0 ] && echo "Please change to root user ..." && exit 1...
/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中都非常有用 用途 /dev/null 通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成,任何你想丢弃的数据都可以写入其中 丢弃标准输出 在写shell...
在Linux开发中,经常会编写shell脚本来执行一些任务,通常是一个脚本只做一件事,随着任务的增加,脚本会越来越多,可复用的地方也会逐渐增加,这时就需要提取出脚本中的公共的功能放到一个通用的脚本中,其他脚本都能复用它 本篇文章介绍shell脚本中如何执行外部脚本,如何调用外部脚本中的函数,以及脚本复用相关的方法 执行外部脚本的方式 假如在当前目录有 a.sh 脚本,内容如下 ...
字符串 可以使用单引号和双引号定义字符串变量但是单引号中不支持变量解析 #! /bin/bash username="mayuan" str_1="hello ${username}" str_2='hello ${username}' echo $str_1 # hello mayuan echo $str_2 # hello ${username} 获取字符串的长度 #! /bin/bash username="mayuan" echo ${#username} # 6 截取字符串 #! /bin/bash username="mayuan" echo ${username:1:...
创建脚本文件 第一步是使用以下命令创建一个扩展名为.sh的新文件: [root@localhost ~]# touch hello_script.sh 写一个简单的脚本 使用vim编辑器打开新创建的文件,将以下bash脚本添加到文件中: [root@localhost ~]# vim hello_script.sh 下面是添加到文件中的脚本内容: #!/bin/bash echo "Hello World" 编辑完,保存并退出。 执行Bash脚本 有两种方法可以运行bash文...
一、安装Linux下面的一个邮件客户端Msmtp软件(类似于一个Foxmail的工具) 1、下载安装:http://downloads.sourceforge.net … 206451&big_mirror=0 # tar jxvf msmtp-1.4.16.tar.bz2 # cd msmtp-1.4.16 # ./configure --prefix=/usr/local/msmtp # make # make install 2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456) # vim ~/.msmtprc ...
一、安装邮件服务 1、解压 tar -jxf mailx-12.4.tar.bz2 -C /usr/src/ && cd /usr/src/mailx-12.4/ 2、编译 make install UCBINSTALL=/usr/bin/install 异常报错解决方法 下载mailx补丁文件“mailx-12.4-openssl_1.0.0_build_fix-1.patch”,将补丁文件和mailx解压缩目录放置同一路径 执行打补丁命令: patch -p0 < mailx-12.4-openssl_1.0.0_build_fix-1.patch 进入m...
执行script.sh -h来显示脚本使用帮助。 格式参考: ### ### my-script — does one thing well ### ### Usage: ### my-script <input> <output> ### ### Options: ### <input> Input file to read. ### <output> Output file to write. Use '-' for stdout. ### -h Show this message. help() { sed -rn 's/^### ?//;T;p' ...
这时我们可以使用expect,向目标服务器上发送指令去实现批量操作。 下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应的命令 1. 在centos上安装expect yum install expect 2. 编写expect脚本 copyfilebatch.sh 下面的脚本将向内网IP为 192.168.0.102 至 192.168.0.112 的服务器分别拷贝一个rc.local文件,拷贝成功后,执行chmod命令,分别重启服务器 #!/usr...
平常工作中,你是否感觉shell脚本只是命令的堆砌;很多时候只是为了实现功能而没有好的组织结构;自己的脚本都不想再看一遍;哈哈,我这就教给shell的“葵花宝典“,自此让你的shell脚本有python一样的美感并且极易维护,真的是shell脚本写到停不下来。 现以nginx控制脚本为例,看一下脚本的美容过程: #!/bin/bash # set命令的奇妙用途留在文章末尾 set -eu # nginx重载配置文件 ngin...
假设读取的文件为当期目录下的 test.txt 文件,内容如下: Google Runoob Taobao 实例 1 #!/bin/bash while read line do echo $line done < test.txt 执行输出结果为: Google Runoob Taobao 实例 2 #!/bin/bash cat test.txt | while read line do echo $line done 执行输出结果为: Google Runoob Taobao 实例 3 for line in `cat test.txt` do ...
然而一贯懒惰的我并不想这么去执行 Shell 和一些重复命令。所以俺寻思可以有个方法本地直接在服务器端执行脚本,寻思生异端,这时候有某大技霸告诉我有个叫 paramiko 的 Python 库,从此开启我新世界的大门。 对于 paramiko 安装直接 pip 或者 PyCharm 这里就不多说了,如果看到这里你觉得自己不怎么了解python语法的也不必担心,你完全可以用 paramiko 单纯的执行 Shell 命令查看结...
awk命令的基本格式如下: awk 'pattern {action}' input-file > output-file 这意味着:取输入文件的每一行; 如果该行包含该模式,则将该操作应用于该行并将结果行写入输出文件。 如果省略该模式,则该操作将应用于所有行。 例如: linuxidc@Ubuntu:~/linuxidc.com$ awk '{ print $5 }' linuxidc.txt > linuxmi.txt 该语句获取每行第5列的元素,并将其作为一行写入输出文件“output.tx...