首页 > 系统相关 >shell

shell

时间:2023-05-04 19:11:20浏览次数:37  
标签:arr shell echo xx bash root localhost

1、编写shell脚本的格式

```bash
#!/bin/bash
# 指定解析器

# 注释

1、编写一个脚本,实现创建100个txt文件

#!/bin/bash

touch {1..100}.txt
```

2、运行脚本的几种方式

```bash
方式一:绝对路径(运行的脚本必须有可执行权限)

方式二:相对路径(运行的脚本必须有可执行权限)

方式三:解释器 + 文件路径(不需要可执行权限)
```

3、变量

```bash
定义一个变量,令其等于1+1

num = `echo "1+1" | bc`

例1:探测当前系统所处于的网段中,有哪些IP可用
[root@localhost ~]# for i in {1..255}; do
ping -c1 -t1 192.168.230.$i &>/dev/null;
if [ $? -eq 0 ];then
echo "192.168.230.$i";
fi;
done

 

# 系统预定义变量

$* : 所有的参数
$@ : 所有的参数
$$ : 当前脚本的进程PID
$# : 当前脚本的参数个数
$? : 当前进程执行的状态


例2:编写一段脚本,实现计算器功能
[root@localhost ~]# cat calc.sh
#!/bin/bash
NUM1=$1
NUM2=$3
JISUAN=$2
echo "$NUM1 $JISUAN $NUM2 = "`echo "$NUM1 $JISUAN $NUM2"|bc`


例3:编写一个脚本,实现登录功能

read -p "请输入用户名:" username
read -p "请输入密码:" password
if [[ $username == "admin" && $password == '123']];then
echo "登录成功"
else
echo "用户名密码错误"
fi
```

4、数组

```bash
- 普通数组:只能使用整数作为数组索引
- 关联数组:可以使用字符串作为数组索引,需要用declare -A声明

声明数组

普通数组
[root@localhost ~]# declare -a arr

关联数组
[root@localhost ~]# declare -A array

赋值的方式

方式1:定义赋值
[root@localhost ~]# declare -a arr=("xiaohua" "nv" "45")

方式2:变量式赋值
[root@localhost ~]# arr[3]=ShangHai

方式3:利用命令赋值
[root@localhost ~]# arr=(`ls /root`)

取值的方式
1、使用下标的方式
[root@localhost ~]# echo ${array[1]}

2、反向取值
[root@localhost ~]# echo ${arr[-1]}

3、取出所有的值
[root@localhost ~]# echo ${arr[*]}

注:正向取值从零开始,反向取值从负一开始

遍历数组
#!/bin/bash

declare -a arr=(`ls /root`)

for i in ${arr[*]}
do
echo $i
done

例4:统计etc目录下,文件中写了多少个root
[root@localhost ~]# grep -oR 'root' /etc/ | grep -v 'Binary' | wc -l
#!/bin/bash
declare -A arr
NUM=`grep -oR 'root' /etc/ | grep -v 'Binary' | awk -F: '{print $NF}' `
for i in $NUM
do
if [[ ${arr[$i]} == '' ]];then
arr[$i]=0
fi
num=${arr[$i]}
arr[$i]=`echo "$num+1"|bc`
done
echo ${arr[*]}

 

例5:计算/etc/password 下每一个词各有多少个

 

xx=123
let num=xx+1 124

let num=xx++ 123

let num=++xx 124

xx++ 等价于 xx + 1 (先赋值,后加减)
xx--

++xx 等价于 xx + 1 (先加减,后赋值)
--xx


while true
do
let x++
let num+=x
if [ $x -eq 100 ];then
break;
fi
done

```

 

 

 

 

 

 

 

标签:arr,shell,echo,xx,bash,root,localhost
From: https://www.cnblogs.com/Haier123/p/17372233.html

相关文章

  • powershell实现http上传文件
    服务端代码#监听IP地址和端口$ip="127.0.0.1"$port=8080#设置上传目录$uploadDir="D:\uploads"#创建HttpListener对象并启动监听$listener=New-ObjectSystem.Net.HttpListener$listener.Prefixes.Add("http://$ip`:$port/")$listener.Start()......
  • mysql - shell 执行 sql 文件有中文乱码-解决
    1.背景执行  发现部分中文乱码2.解决在执行sql语句之前,加入下面指令即可SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0; ......
  • shell 版本号比较_用shell如何比较软件版本号的大小
    摘自:https://blog.51cto.com/u_13753753/5554564 比如你想写个脚本来比较两个版本号(如"1.2.30"和"1.3.0")来辨认哪个版本是最新的,有可以比较两个版本号字符串的shell脚本吗?当你写了一个shell脚本,想使用脚本来比较两个版本号,然后能区分哪个版本号更高哪个版本号更低。比如,你......
  • Shell简单介绍
    是什么Shell是计算机操作系统中的一种命令行解释器,它是一个用户与操作系统内核之间的接口.Unix/Linux中,Shell是一种脚本语言;Windows中通常指命令行解释器(cmd.exePowerShell).Q:系统命令和shell语言指令有交集吗A:有交集。在Linux系统中,很多常用的命令都可以在Shell中使......
  • Linux shell command make All In One
    LinuxshellcommandmakeAllInOneGNUMake$make-vGNUMake4.3为aarch64-unknown-linux-gnu编译Copyright(C)1988-2020FreeSoftwareFoundation,Inc.许可证:GPLv3+:GNU通用公共许可证第3版或更新版本<http://gnu.org/licenses/gpl.html>。本软件是自由软件......
  • poweshell监控文件夹变化
    #Definethefolderpathtomonitor$folder='C:\Downloads'#Definethefilterforthetypeoffilestomonitor$filter='*.*'#Definetheoptionsforthefilesystemwatcher$watcher=New-ObjectSystem.IO.FileSystemWatcher$wa......
  • Linux shell script shebang env All In One
    LinuxshellscriptshebangenvAllInOne指定shellscript的运行环境shellscriptshebangenvhashbangenv#!\usr\bin\envbash❌#!\usr\bin\envbash#❌#!/usr/bin/env✅#!/usr/bin/envbash✅demos#!/usr/bin/envbash#✅exportN=1#case1......
  • Linux shell script switch...case All In One
    Linuxshellscriptswitch...caseAllInOnecase...in...esaccase...esac为多选择语句,与其他语言中的switch...case语句类似,是一种多分支选择结构;每个case分支用右圆括号开始,用两个分号;;表示break,即执行结束,跳出整个case...esac语句,esac(就是case反过......
  • PowerShell-自定义的配置文件
    PowerShell5.1一般Windows10自带的是这个版本的PowerShell,这个版本的自定义配置文件的文件编码要保存为ANSI才行。PowerShell7这个是通过github另外下载的,这个版本的自定义配置文件的文件编码要保存为utf-8才行。 配置文件代码其实也没啥,主要加了一个时间显示和我可能用......
  • xshell下上传文件无法上传,速度一直为0的解决方法
    连接服务器cd切换到主目录执行以下命令如果在xshell下上传文件速度一直为0,可以尝试安装yum -yinstalllrzsz......