首页 > 系统相关 >shell基础

shell基础

时间:2024-10-26 12:34:41浏览次数:4  
标签:wsa shell 变量 基础 echo txt root

shell基础

双引号 (""):允许变量展开和命令替换,但保留大部分特殊字符的字面含义。

$  ``  \  !

单引号 (''):所有内容都被视为字面量,不会进行变量展开或命令替换。例如,echo '$VAR' 会输出 $VAR 而不是变量的值。

反引号 ( ):用于命令替换,将命令的输出替换到命令行中。例如,DATE=$(date) 会将当前日期赋值给变量 DATE

command1 && command2 当command1执行成功,则执行command2
command1 ; command2 在一个命令中执行两条命令
command1 || command2 当command1执行失败,则执行command2

shell通配符

\*:匹配零个或多个字符。例如,*.txt 匹配所有以 .txt 结尾的文件。

?:匹配单个字符。例如,file?.txt 匹配 file1.txtfileA.txt 等,但不匹配 file10.txt

[...]:匹配括号内的任意一个字符。例如,file[1-3].txt 匹配 file1.txtfile2.txtfile3.txt

{...}:用于生成一组可能的字符串。例如,{a,b,c}.txt 匹配 a.txtb.txtc.txt

!:在方括号中用来表示“不匹配”。例如,file[!1-3].txt 匹配任何不以 123 开头的文件。


() 引用命令

[root@wsa ~]# echo $(hostname)
wsa

[] 引用运算符

[root@wsa ~]# echo $[a+1]
2

[root@wsa ~]# echo $[(a+1)/2]
1

{} 引用变量

[root@wsa ~]# echo ${a}
1

环境变量和本地变量

本地变量

仅在当前shell中生效的变量

[root@wsa ~]# echo $a
1                                 当前shell可以看到
[root@wsa ~]# bash
[root@wsa ~]# echo $a             另外一个shell无法引用

环境变量

在所有子shell中有效的变量(在另外终端引用不了)

将本地变量转化为环境变量

将本地变量转化为环境变量   export a
定义环境变量     export a=1

[root@wsa ~]# export a
[root@wsa ~]# bash
[root@wsa ~]# echo $a
1

查看变量

set查看所有变量

env查看所有环境变量

[root@wsa ~]# aaa=1000           本地变量
[root@wsa ~]# set |grep aaa       
aaa=1000
[root@wsa ~]# env |grep aaa       set可以查到 env查不到
[root@wsa ~]# export aaa
[root@wsa ~]# env |grep aaa        转化为环境变量之后env可以查到
aaa=1000

全局环境变量

[root@wsa ~]# cat /etc/profile  定义在该文件中的变量。所有用户均能获取到
city=wuhan
export city

[root@wsa ~]# source /etc/profile 读取此文件中变量信息

[root@wsa ~]# env |grep wuhan
city=wuhan
[root@wsa ~]# set |grep wuhan
city=wuhan                         在此shell和新开窗口中都能读取到此变量


用户环境变量

[root@wsa ~]# cat .bash_profile   用户环境变量   登录用户时先读全局环境变量,再读用户环境变量
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then       
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

登录shell和非登录shell

登录shell

su - user

/etc/profile
/etc/bashrc 
.bashrc
.bash_profile 

非登录shell

打开新终端
su user 切换用户
执行脚本

/etc/bashrc 
.bashrc

shell中的test

test命令是一个用于检查文件属性和进行条件测试的工具

文件测试

  • -e filename:判断文件是否存在。
  • -f filename:判断是否为常规文件。
  • -d directory:判断是否为目录。
  • -r filename:判断文件是否可读。
  • -w filename:判断文件是否可写。
  • -x filename:判断文件是否可执行。

示例:

if [ -e myfile.txt ]; then
    echo "文件存在"
fi

字符串比较

  • -z string:判断字符串是否为空。
  • -n string:判断字符串是否非空。
  • string1 = string2:判断两个字符串是否相等。
  • string1 != string2:判断两个字符串是否不相等。

示例:

if [ -z "$myvar" ]; then
    echo "变量为空"
fi

数值比较

  • num1 -eq num2:判断两个数字是否相等。
  • num1 -ne num2:判断两个数字是否不相等。
  • num1 -lt num2:判断num1是否小于num2。
  • num1 -le num2:判断num1是否小于或等于num2。
  • num1 -gt num2:判断num1是否大于num2。
  • num1 -ge num2:判断num1是否大于或等于num2。

示例:

if [ "$a" -gt "$b" ]; then
    echo "$a 大于 $b"
fi

注意事项

  • 使用方括号时,[]之间需要有空格。
  • 使用test命令时,特别是在复杂条件下,可以使用&&(与)和||(或)组合条件。

示例:

if [ -f myfile.txt ] && [ -r myfile.txt ]; then
    echo "文件存在且可读"
fi

标签:wsa,shell,变量,基础,echo,txt,root
From: https://www.cnblogs.com/cloudwangsa/p/18503887

相关文章

  • C语言数组与函数实践:构建基础版扫雷游戏
         使用C语言中的数组和函数来构建一个简单的扫雷游戏。通过这个项目,你可以练习如何在C语言中使用数组来存储和处理游戏数据,如何使用函数来组织代码并提高代码的可读性和可维护性。        在实现这个项目时,你可以按照以下步骤进行:1、定义游戏数组:使用二维数......
  • linux基础
    linux基本命令1修改时区1.修改时区timedatectlset-timezone“时区”2.创建用户查看用户idadmin创建用户useraddadmin修改密码passwdadmin输入两次修改自己的密码时直接passwd3切换用户su-adminsuadmn注销exit4vim1.按i键进入插入模式2.按esc键返回......
  • 零基础小白如何入门大模型?(附学习路线)
    大模型赛道有前景吗?这个问题,是个热门话题,但不是个好问题。因为,它基于不同的提问人、提问意图,会有不同的答案。前排提示,文末有大模型AGI-CSDN独家资料包哦!对于一个职业发展初期的新人,提问的意图可能是:我要不要转行去大模型赛道,从而可以获得更快的职业发展?让我三年内直达......
  • Redis的基础命令
    一、数据库操作命令1.redis中库的说明redis中的库默认存在16个库,分别按照0-15来排列选择库的命令:select0-15例如:select1就是选择一号库的意思2.清空表的命令1.清除当前表:flushdb2.清除所有表:flushall3.redis中客户端显示中文./redis-cli-p7000--raw二、操作key相......
  • 【MySQL基础】数据库与表的基本操作:从创建到管理
    文章目录写在前面:1、数据库的创建和管理1.创建数据库:CREATEDATABASE注意事项:2.查看已有数据库:SHOWDATABASES3.删除数据库:DROPDATABASE防止误删4.总结2、表的创建与管理1.创建数据表:CREATETABLE2.查看表结构:DESCRIBE表名3.删除数据表:DROPTABLE4.修改表结......
  • 鸿蒙基础篇-组件
    “在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。”各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙基础篇-组件首先在鸿蒙开发中,组件(Comp......
  • Lua语法基础教程(下篇)
    今天我们继续学习Lua语法基础教程,下篇。九、函数9.1初识函数函数是指一段在一起的、可以做某一件事儿的程序,也叫做子程序。在前面的内容中,我们已经接触过了函数的调用,这个函数就是前面用到了很多次的print(...)。调用函数只需要按下面的格式即可:函数名(参数1,参数2,参数3,.......
  • 架构设计(17)大数据框架Hadoop与基础架构CDH
    HadoopHadoop是一个开源的大数据处理框架,由Apache软件基金会开发。它主要用于存储和处理大规模数据集,能够在分布式计算环境中有效工作。以下是Hadoop的详细介绍,包括其核心组件、架构、特性和应用场景。1.Hadoop的架构Hadoop的架构分为两个主要部分:Hadoop分布式文件系......
  • 多线程基础
    一、线程、程序、进程的定义及区别程序:一组计算机能识别和执行的指令、它是一些保存在磁盘上的指令的有序集合。进程:程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程......
  • 【Web前端】JavaScript 对象基础
     JavaScript是一种以对象为基础的编程语言,操作数据时,实际都是在处理对象。可以使用简单的数据类型(如字符串、数字和布尔值)来实现一些功能,但深入了解JavaScript对象的运作,将使你能够编写更强大和灵活的代码。对象基础JavaScript中,对象是由一组键(或属性)和值组成的无......