首页 > 系统相关 >shell脚本

shell脚本

时间:2024-09-09 11:16:31浏览次数:9  
标签:脚本 shell echo sh localhost bash

shebang
#!开头的文件,程序会在执行时会调用/bin/sh,bash的解释器。
默认使用/bin/sh执行。
也可指定使用解释器,如: /bin/bash/python hello.py

执行脚本的方式

  1. bash script.sh或者sh script.sh,文件本身没有执行权限的方法。
  2. 使用绝对路径或相对路径,需要文件有执行权限。

shell变量
shell脚本中,变量与值之间不能有空格。
变量命名规则:

  1. 数字、字母、下划线
  2. 不能以数字开头
  3. 严格区分大小写

环境变量:也称全局变量。
特殊变量:$?,若返回0.则上一条命令执行成功;若返回1-255则不成功。

单引号变量:不识别特殊语法。
双引号变量:能识别特殊语法。
例:

[root@localhost ~]# name=wukong
[root@localhost ~]# name1='${name}'
[root@localhost ~]# name2="${$name}"
[root@localhost ~]# echo ${name}
wukong
[root@localhost ~]# echo ${name1}
${name}
[root@localhost ~]# echo ${name2}
wukong

关于sh

  1. 每次调用bash/sh解释器执行脚本,都会开启一个子shell,因此不会保留当前shell变量,通过pstree查看进程树。
  2. 调用source或者点符号,在当前shell环境执行脚本,变量保存。
    linux中,反引号中的命令执行结果讲会被保留。
    文件~/.bash_prpfile --> 用户个人配置文件。

环境变量加载顺序

  • ssh登录linux,启动一个bash shell
  • 加载/etc/profile --> 全局环境变量:为系统中每一个用户设置环境信息。
  • 读取/etc/profile.d目录下脚本。有系统诸多脚本,也有自定义需要登录加载的脚本。
  • 运行$HOME/.bash <-- 用户环境变量文件
  • 运行$HOME/.bashrc
  • 运行/etc/bashrc

特殊变量
$0:获取shell脚本文件名。
$1、$2……$n:获取脚本的第1、2……n个参数,大于9则需要写大括号,如:${10}。
$#:接受到的参数个数。
$*:接收所有参数合并为一个字符串。
$@:不加引号,效果如上。加引号,接收所以参数为独立字符串,空格保留。
$和$@的区别如下:

[root@localhost bin]# sh special1_difference.sh welcome to Jiaxing
print each param from "$*"
welcome to Jiaxing
print each param from "$@"
welcome
to
Jiaxing

special1_difference.sh脚本代码如下:

echo "print each param from \"\$*\""
for var in "$*"
do 
	echo "${var}"
done

echo "print each param from \"\$@\""
for var in "$@"
do
        echo "${var}"
done

特殊状态变量
$?:上次命令状态结果返回,0执行成功,非0失败。
$$当前shell脚本的进程号。
$!上次后台进程的PID。
$_取得上次命令传入的最后一个参数(字面意思)。

标签:脚本,shell,echo,sh,localhost,bash
From: https://www.cnblogs.com/oneko/p/18403095

相关文章

  • Shell脚本 随笔1
    Shell是一个程序,采用c语言编写。是用户与Linux内核交互沟通的桥梁。它既是一种命令语言,也是一种解释性编程语言。Shell就是将完成一个任务的所有命令按照执行的先后顺序,自上而下的写入到一个文本文件中,然后给予执行权限。编写的几种规范:1.脚本命名要有意义2.必须要指定脚本运......
  • 0906, 0909 shell编程与基础算法(leetCode )
    0906哈希表的基本知识:哈希表(HashTable)又称散列表,是除顺序存储结构、链式存储结构和索引表存储结构之外的又一种存储结构。哈希碰撞:解决办法开放定址法:是一类以发生冲突的哈希地址为自变量,通过某种哈希冲突函数得到一个新的空闲的哈希地址的方法。(1)线性探测法从发生......
  • BeanShell预处理器获取jmeter请求后变量无法替换
    背景jmeter接口验签逻辑是从请求参数中获取值处理加密验签后,讲请求参数中的sign值替换如果处理后直接讲sign生成Jmeter变量,在当前请求是无法替换的,因为jmeter请求的URL和body已经运行,不会再重新运行替换解决方法在当前预处理程序中再写处理当前请求的逻辑//替换URL中的sig......
  • Shell编程:文本处理器(sed)
    文章目录sed编辑器工作过程提高sed执行效率的方法sed命令格式与选项地址定界sed的核心功能打印功能(p,=,l命令)删除操作(d命令)替换操作(s,c,y命令)增加功能(a,i,r命令)使用-f指定命令文件(读取规则)sed编辑器sed是一种流编辑器(StreamEdit......
  • 网络属性及相关配置工具\shel脚本编程-进阶 \进程-系统性能和计划任务
    一、通过网络配置命令让主机上网1.查看网络接口信息:  -`ipa`或者`ifconfig`显示系统中所有网络接口的详细信息,包括IP地址、子网掩码、MAC地址等。2.配置IP地址、子网掩码、网关和DNS:  -IP地址:使用`ifconfig`或`ipaa`命令来设置IP地址。例如,`ifconfig......
  • shell脚本部署lamp
    [root@node1~]#yum-yinstalllrzsz//先将包文件拖进来[root@node1~]#cd/opt/[root@node1opt]#lsapr-1.7.0.tar.gzapr-util-1.6.1.tar.gzhttpd-2.4.54.tar.gzmysql-5.7.37-linux-glibc2.12-x86_64.tar.gzphp-8.2.5.tar.gz[root@node1~]#cd/[roo......
  • 在Linux中,可以使用以下命令来获取脚本所在的目录:
    在Linux中,有几种方式可以获取当前正在执行的脚本所在的路径。这些方法依赖于你正在使用的shell(比如bash)或者脚本语言(比如Python,Perl等)。以下是一些常见的方法,特别是在bash脚本中获取脚本路径:###1.使用`$0`和`dirname`命令在bash脚本中,`$0`变量包含了脚本的名称或者路......
  • SAPIEN PowerShell HelpWriter crack
    SAPIENPowerShellHelpWritercrackKeyFeaturesofSAPIENPowerShellHelpWriter:SwiftPerformancewithCachedDataandMulti-threadedCodeVersatileExplorationofLocalandRemoteMachinesAdvancedSearchOptionsandPowerfulFilters......
  • 【工具推荐】0x7eTeamTools v1.2(最新版) -全能的渗透测试工具,一键getshell
    工具介绍:0x7eTeamTools是一个集成了多种渗透测试功能,javafx练习,JS接口提取,漏洞检测的工具,旨在帮助用户进行高效、全面的网络安全测试。从基本的编码转换到复杂的空间测绘和漏洞检测,这款工具提供了全方位的功能支持。下载链接:链接:https://pan.quark.cn/s/8c4268ee6b79软......
  • shell的简单编写
    shebang行shell脚本的第一行是#!/bin/bash,/bin/bash是我们用来解释该脚本的shell的路径,这里是用bash,也可以替换成其他的注释#这是一个注释以#开头表示该符号右侧是注释变量变量赋值在shell中,变量都是以字符串形式存储的,数字字符串会在进行算术运算时自动转换#不......