首页 > 系统相关 >Shell

Shell

时间:2023-05-23 19:12:47浏览次数:31  
标签:shell 变量 echo Shell root localhost

shell

Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。
Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell脚本是一种为shell编写的脚本程序。
Shell编程跟JavaScript、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

shell变量

定义变量时,变量名不加$,如:

my_name="xdn"

注意,变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线_
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。
    除了显示地直接复制,还可以用语句给变量复制,如:
for file in `ls /etc`
或
for file in $(ls /etc)
# 以上语句将/etc下目录的文件名循环出来

使用变量

使用一个定义过的变量,只要在变量名前面加$符号即可,如:

[root@localhost ~]# myname="xdn"
[root@localhost ~]# echo $myname 
xdn
[root@localhost ~]# echo ${myname}
xdn

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

[root@localhost ~]# for skill in Java;do
> echo "I am good at ${skill}Script"
> done
I am good at JavaScript

[root@localhost ~]# for skill in Java;do 
> echo "I am good at $skillScript"  
> done
I am good at 

如果不给skill变量加花括号,写成echo "I am good at $skillScript" ,解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。
推荐给所有变量加上花括号
已定义的变量可以重新被定义,如:

[root@localhost ~]# your_name="zjx"
[root@localhost ~]# echo $your_name
zjx

[root@localhost ~]# your_name="lyx"
[root@localhost ~]# echo $your_name
lyx
[root@localhost ~]# 

只读变量

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:

#!/bin/bash

myurl="https://www.baidu.com"
readonly myurl
myurl="https://www.taobao.com"

运行脚本,结果如下:
img

删除变量

使用unset命令可以删除变量。变量被删除后不能再次使用,unset命令不能删除只读变量
语法:

unset [变量名称]

例:
img

变量类型

运行shell时,会同时存在三种变量:

(1)局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
(2)环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
(3)shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是全局变量,这些变量保证了shell的正常运行。

Shell 字符串

字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

单引号

str='this is a string'

单引号字符串的限制

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,,作为字符串拼接使用。

双引号

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
    例:
#!/bin/bash

your_name="xdn"
str="hello, I know you are \"$your_name\"!"
echo -e $str

img

标签:shell,变量,echo,Shell,root,localhost
From: https://www.cnblogs.com/xiaodunan/p/17426137.html

相关文章

  • Linux shell command make & Makefile All In One
    Linuxshellcommandmake&MakefileAllInOne脚本自动化构建工具make&makefilehttps://linux.xgqfrms.xyz/linux_basic/1010index.htmmake第二十二章、1.3https://linux.xgqfrms.xyz/linux_basic/0520source_code_and_tarball.htm#intro_makemakefile第二十二章、......
  • shell特殊符号梳理
    1$相关关键词shell中与@和n等经常被使用,但是有时候仍然对部分符号记忆不是很深刻,特地整理成表格方便记忆。-描述备注$0当前脚本文件名$n传递给脚本或函数的参数$#传递给脚本或函数的所有参数个数$*传递给脚本或函数的所有参数当它们被双引号("“)包含时,”$*"会将所有的参数作为......
  • (二)shell脚本基础
    shell条件测试read内置命令-p#设置提示信息-t#等待用户输入超时,timeout​[root@shellopt]#read-t15-p"pleaseentername,age:"you_nameyou_agepleaseentername,age:gm18[root@shellopt]#echo$you_name$you_agegm18字符串条件测试test命令test评......
  • 【linux进阶】shell 命令之 awk | sed命令详解,带实例
    WK和Sed是常用的文本处理工具,可以用来处理文本文件、日志文件等数据。下面将分别介绍AWK和Sed命令,并提供一些实例。AWK命令AWK是一种文本处理工具,其名字取自它的三位创始人的姓名:AlfredAho,PeterWeinberger和BrianKernighan。AWK命令通常用于从文件或其他输入流中......
  • 【linux进阶】shell之数组字典参数处理详解
    在Shell脚本中,使用数组和字典(关联数组)可以方便地处理参数。以下是它们的介绍:数组Shell中的数组类似于其他编程语言中的数组,它是一个用于存储多个值的变量。在Bash和其他类Unixshell中,可以使用以下语法来创建和操作数组:1.定义数组定义数组需要使用array_name=(value1......
  • Shell(Linux)手册
    资料来源Shell全面掌握教程|骏马金龙基础Bash中基本数据类型只有字符串类型echo123Bash中字符串的串联操作,直接将两段数据连接在一起即可,不需要任何操作符。echo"123""456"echo123456变量a=1echo$aa="www.cnblogs.com/mugetsukun"echo$aecho${#a}#获取......
  • buuctf ciscn_2019_n_5 pwn ret2shellcode
    首先checksec查看保护策略,没有开栈不可执行NX,考虑构造shellcodeArch:amd64-64-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXdisabledPIE:NoPIE(0x400000)RWX:HasRWXsegments查看反编译代码,可以看......
  • MySQL注入点写入WebShell的几种方式
    在工具化日益成熟的今天,手工注入的能力越来越被忽视了。当你掌握了一款工具的使用时,应更深入的去了解工具帮你做了什么,把工具所产生的影响控制在自己可控的范围内。比如:当面对一个MySQL注入点,通过使用SQLmap的--os-shell命令选项,便可轻松一键获取Webshell,但是非正常退出时,便会在网......
  • Jmeter函数助手11-BeanShell
    BeanShell函数用于简单的计算或者运行编程脚本。表达式求值:填入脚本代码或脚本文件${__BeanShell(source(“test.bsh”))}存储结果的变量名(可选) 1、填入一个计算公式返回计算结果88/22=4,${__BeanShell(88/22,)} ......
  • Xshell 7 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”
    平平无奇的一天,想同步一下本地和服务器的程序。博主一般采用的同步文件的方法是通过xshell先连接服务器,再通过xftp同步文件。突然,今天打开xshell的时候,报出问题需要更新到新版本: 然后就开始自动更新,结果显示当前xshell7已经是最新版本的了! 我又试了一下Xftp7,也是无法直......