Shell基础相关命令

Bash变量基本概念

  • 变量:用来存放各种数据,用一个固定的字符串代替可能发生变化的内容,脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。
  • Bash shell 中,每一个变量的值都是字符串(可以使用 Shell declare 关键字显式定义变量的类型)、
  • 变量可以简化Shell脚本的编写,使Shell脚本更简洁也更易维护
  • 变量为进程间共享数据提供了一种新的手段
  • 包含变量名和变量值两个要素

定义变量值

  • 用“=”连接变量名和变量值
  • 设置变量值时,“=”左右不能直接连接空格
  • 如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号;
  • 如果 value 包含了空白符,那么就必须使用引号包围起来。
  • 试以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出
  • 双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。
  • 可以使用转义符“\”将特殊字符转义为一般字符,也可用单引号实现

  示例: 

     1. 定义变量(无引号、单引号、双引号)

[fy@localhost 20220514]$ var=111
[fy@localhost 20220514]$ var1="number is $var"
[fy@localhost 20220514]$ var2='number is $var'
[fy@localhost 20220514]$ echo $var1
number is 111
[fy@localhost 20220514]$ echo $var
111
[fy@localhost 20220514]$ echo $var2
number is $var

     2.输出变量值(两种方法)、换行输出、不换行输出

[fy@localhost 20220514]$ fff=nice
[fy@localhost 20220514]$ echo $fff
nice
[fy@localhost 20220514]$ echo ${fff}
nice
[fy@localhost 20220514]$ echo -n $fff
nice[fy@localhost 20220514]$ 

修改变量值 

    1.已定义的变量,重新赋值 

注:第二次对变量赋值时不能在变量名前加$,只有在使用变量时才能加$

    2.为变量追加新内容,建议使用"$variable_name"${variable_name} 的形式

    3.用命令的执行结果为变量赋值:`command ` $(command )

  示例:

      修改变量值,追加新内容,并输出 

[fy@localhost 20220514]$ fy="nice"
[fy@localhost 20220514]$ echo $fy
nice
[fy@localhost 20220514]$ fy="cool"
[fy@localhost 20220514]$ echo $fy
cool
[fy@localhost 20220514]$ fy="$fy"cool
[fy@localhost 20220514]$ echo $fy
coolcool
[fy@localhost 20220514]$ fy=${fy}nice
[fy@localhost 20220514]$ echo $fy
coolcoolnice

赋值变量值-read命令

  • read Shell 内置命令,用来从标准输入中读取数据并赋值给变量。
  • 结构:read [-options] [variables]
  • variables表示用来存储数据的变量,可以有一个,也可以有多个。
  • options表示选项,如下表所示:

选项

说明

-a array

把读取的数据赋值给数组 array,从下标 0 开始。

-d delimiter

用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。

-e

在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。

-n num

读取 num 个字符,而不是整行字符。

-p prompt

显示提示信息,提示内容为 prompt。

-r

原样读取(Raw mode),不把反斜杠字符解释为转义字符。

-s

静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。

-t seconds

设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。

-u fd

使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。

  示例:

      使用read赋值变量值,并输出,对选项-p-n进行练习 

[fy@localhost 20220514]$ read -p "Your last name please:" lastname
Your last name please:feng
[fy@localhost 20220514]$ echo $lastname
feng
[fy@localhost 20220514]$ read -n 3 num
123[fy@localhost 20220514]$ 
[fy@localhost 20220514]$ echo $num
123

环境变量

  • 操作系统内置的变量
  • 在登录操作系统后就默认存在,多用于保存重要的系统参数
  • 环境变量可以被系统中所有的应用共享
  • 使用envexport命令查看系统当前的环境变量

  示例: 

      输出系统环境变量

特殊变量

1. PS1
  • PS1用于设置Bash的命令行提示符,如“[zys@centos7 ~]$”
  • 只影响当前的Bash进程,重新打开Bash窗口或重启系统后,PS1恢复默认值

2.PS2

  • PS2用于换行输入命令时的提示符
  • PS1相同,只影响当前进程

3.$:查看当前Bash的进程号(PID 

4.?:

  • 返回上一个命令的状态码
  • 一般用0表示成功0表示失败或异常

  示例: 

       特殊变量的应用:$?

[fy@localhost 20220514]$ echo $$
8983
[fy@localhost 20220514]$ bash
[fy@localhost 20220514]$ echo $$
10174
[fy@localhost 20220514]$ mkdir dir1
[fy@localhost 20220514]$ ls dir1
[fy@localhost 20220514]$ echo $?
0
[fy@localhost 20220514]$ ls file1
ls: 无法访问file1: 没有那个文件或目录
[fy@localhost 20220514]$ echo $?
2

重定向操作 

  • 有输入重定向和输出重定向之分
  • 默认情况下,标准输入是键盘,标准输出是屏幕(即显示器)
  • Linux命令从键盘获得输入,并把执行结果在屏幕中显示出来
  • 重定向:重新指定命令的输入和输出
  • 输入重定向:从键盘流向程序,如果改变了它的方向,数据就从其它地方流入
  • 输出重定向:从程序流向显示器,如果改变了它的方向,数据就流向其它地方

 1.输出重定向 

  • 输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。
  • 在命令后输入大于号“>”并且后跟一个文件名,对原文件的内容进行了“覆盖”,即清空原文件内容
  • 在命令后输入两个大于号“>>”并且后跟一个文件名,表示在原文件的基础上“追加”新内容

  示例: 

      输出重定向”>”,”>>”,输出到文件

[fy@localhost 20220514]$ touch fy.sh
[fy@localhost 20220514]$ ls
1.sh  3.sh  5.sh    dir1   fy.sh    hello.sh
2.sh  4.sh  com.sh  file1  game.sh  mys.sh
[fy@localhost 20220514]$ ls -l 1.sh > fy.sh
[fy@localhost 20220514]$ cat fy.sh
-rw-rw-r--. 1 fy fy 177 5月  14 15:41 1.sh
[fy@localhost 20220514]$ pwd
/home/fy/20220514
[fy@localhost 20220514]$ pwd >> fy.sh
[fy@localhost 20220514]$ cat fy.sh
-rw-rw-r--. 1 fy fy 177 5月  14 15:41 1.sh
/home/fy/20220514

 2.输入重定向 

  • 输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。
  • 功能:将原来从键盘输入的数据改为从文件读取

     符号

                                          说明

command <file

将 file 文件中的内容作为 command 的输入。

command <<END

从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止(分界符可以是任意的字符串,用户自己定义)。

command <file1 >file2

file1 作为 command 的输入,并将 command 的处理结果输出到 file2。

  示例:

      输入重定向”<”练习

[fy@localhost 20220514]$ cat ddd.sh
/home/fy
[fy@localhost 20220514]$ cd < ddd.sh
[fy@localhost ~]$ 

管道命令 

  • 可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)。
  • 功能:一个命令的输出成为另一个命令的输入
  • 使用管道符号“|”连接两个命令,左侧命令的输出成为右侧命令的输入
  • 可以在一条命令中多次使用管道符号以实现更复杂的操作

  示例:

      1.管道”|”练习。

[fy@localhost ~]$ ls | find ?.sh
9.sh
[fy@localhost ~]$ cat file1
[fy@localhost ~]$ cat 9.sh
#!/bin/bash
function sum ( )
{
 echo 'input parameters are: $@ = "'$@'"'
 if ( test $# -ne 2 ); then
  echo "usage: sum n1 n2"
  return 1
 fi
 
 var_sum=$(($1 + $2)) 
}

sum 11 16

[fy@localhost ~]$ cat 9.sh | wc
     14      36     181

      2.将管道、findgrep结合进行练习。

[fy@localhost ~]$ vi file1
[fy@localhost ~]$ cat file1
aaaa
bbb
ccc
dddd
[fy@localhost ~]$ find . -name "file?" | grep -n a file1
1:aaaa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值