[转帖]shell基础-bash变量-预定义变量

shell,基础,bash,变量,定义 · 浏览次数 : 0

小编点评

**变量定义** * **预定义变量**:使用 `declare` 语句在脚本开头定义变量,并在变量定义中使用 `=`符号将变量值初始化。 ```bash # 定义一个变量,初始值为 0 declare -i var_name 0 # 定义一个变量,初始值为除 0 之外的任何数字 declare -o var_name ! -eq 0 ``` **接收键盘输入** * **`read` 命令**可以接收多个字符作为变量的值。 ```bash # 接收一个字符的输入 read -p "Please input a character:" character # 接收一个数字的输入 read -p "Please input a number:" number ``` **其他** * **`$?` 和 `$$` 是用于获取上一条命令执行状态的特殊变量。 * **`chmod` 命令**用于设置文件权限。 * **`&`符号**在后台执行命令。 * **``符号**用于将字符串输出到终端。

正文

1. 预定义变量

预定义变量说明
$?用于判断上一条命令的执行状态。如果上一条命令执行正确,则这个变量的值是0;如果上一条命令执行错误,则这个变量的值是除0之外的其他数(具体是哪个数,由命令的撰写者决定)。
$$当前进程的进程号(PID)。
$!在后台运行的最后一个进程的进程号(PID)。

示例:

[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  sh  testfile
[root@localhost ~]# echo $?
0
[root@localhost ~]# lstt
-bash: lstt: command not found
[root@localhost ~]# echo $?
127

[root@localhost ~]# echo $$
8790

[root@localhost ~]# echo $!

    每个计算机程序只要在运行,至少会产生一个进程。

    当前,并没有后台运行的进程,因此,$!的值为空。

    这里,我们写一个脚本文件variable.sh,内容如下:

    #!/bin/bash
    #Author: admin
    

    #输出当前进程的PID
    #这个PID其实就是这个脚本执行时产生的进程的PID

    echo "The current process is $$"

    #使用find命令查找hello.sh文件
    #符号&表示把这条命令放入后台执行
    find /root/sh -name hello.sh&

    echo "The last of daemon processes is $!"

      赋予执行权限:

      chmod 755 variable.sh
      • 1

      执行该脚本:

      [root@localhost sh]# ./variable.sh 
      The current process is 8889
      The last of daemon processes is 8890
      [root@localhost sh]# /root/sh/hello.sh

        2. 接收键盘输入

        命令格式:read [选项] [变量名]

        作用:接收键盘输入的字符串作为变量的值。

        选项:

        • -p “提示信息” :在等待键盘输入时,输出提示信息,方便用户输入。
        • -t 秒数:指定等待时间,防止read命令一直等待用户输入。
        • -n 字符数:指定输入的字符数,只要用户输入指定的字符数,该read命令立即执行完毕。
        • -s:隐藏输入的数据(屏幕上看不到任何输入信息)。

        示例:

        [root@localhost sh]# read -p "please input a number:" ab
        please input a number:6  
        [root@localhost sh]# echo $ab
        6

          read命令也可用于shell脚本文件中,接收用户的输入来作为变量的值。

          编写一个脚本read.sh,内容如下:

          #!/bin/bash
          #Author: admin
          

          # 将用户的输入作为变量name的值
          read -t 10 -p "Please input your name: " name
          echo "Your name is $name"

          # 回车
          echo -e "\r"

          # 将用户的输入作为变量age的值
          read -s -t 10 -p "Please input your age: " age
          # 回车
          echo -e "\r"
          echo "Age is $age"

          # 回车
          echo -e "\r"

          # 将用户的输入作为变量gender的值
          read -n 1 -t 10 -p "Please select your gender [M/F]: " gender
          # 回车
          echo -e "\r"
          echo "Gender is $gender"

            赋予执行权限,然后执行该脚本。

            chmod 755 read.sh 
            ./read.sh

              与[转帖]shell基础-bash变量-预定义变量相似的内容:

              [转帖]shell基础-bash变量-预定义变量

              1. 预定义变量 预定义变量说明$?用于判断上一条命令的执行状态。如果上一条命令执行正确,则这个变量的值是0;如果上一条命令执行错误,则这个变量的值是除0之外的其他数(具体是哪个数,由命令的撰写者决定)。$$当前进程的进程号(PID)。$!在后台运行的最后一个进程的进程号(PID)。 示例: [ro

              [转帖]Bash脚本编程学习笔记02:脚本基础和bash配置文件

              脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行。例如C语言和Java语言。 解释运行:需要一个编程语言的解释

              [转帖]Shell 基础

              https://www.cnblogs.com/linuxk/p/10495887.html 目录 Shell基础入门 1、什么是Shell? 2、Shell脚本的结构 3、Shell的变量 3.1.自定义环境变量 3.2.普通变量 3.3.位置参数变量 3.4、状态变量 4、条件测试和比较 4.1

              [转帖]【shell语法 | 01】基础练习

              https://www.cnblogs.com/sunbines/p/14587095.html 目录 利用判断符号[ ] 循环体 正文 回到顶部 利用判断符号[ ] [ str ] : str 字符串存在为真 1 [root@localhost ~]# if [ ]; then echo 'tru

              [转帖]学习如何编写 Shell 脚本(基础篇)

              https://juejin.cn/post/6930013333454061575 前言 如果仅仅会 Linux 一些命令,其实已经可以让你在平时的工作中游刃有余了。但如果你还会编写 Shell 脚本(尤其是前端工程师),它会令你“添光加彩”。如果本文对你有所帮助,请点个👍 👍 👍 吧。 S

              [转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率

              https://gitee.com/jialy/auto-monitor-java-process/tree/master 本文主要介绍在 show-busy-java-threads.sh 脚本的功能基础上,通过 process-cpu-monitor.sh 脚本实现Linux平台上Java进程或

              [转帖]Linux基础命令---mysql

              https://www.cnblogs.com/wj78080458/p/10848990.html mysql mysql是一个简单的sql shell,它可以用来管理mysql数据库。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法 mysql [

              [转帖]Day63_Kafka(一)

              第一讲 Kafka基础操作 课程大纲 课程内容 学习效果 掌握目标 Kafka简介 消息队列 掌握 Kafka简介 Kafka分布式环境 Kafka操作 Kafka shell 掌握 Kafka api Flume整合kafka 一、Kafka简介 (一)消息队列 1、为甚要有消息队列 2、消息队列

              [转帖]40张图入门Linux——(前端够用,运维入门)

              本文主要是Linux的入门内容,利用40张思维导图从基础、操作、实用指令、组管理和权限管理、crond任务调度、Linux磁盘分区和挂载、Linux网络环境配置、进程管理、服务管理、RPM和YUM、软件安装关键点、Shell编程共十二部分着手,从而系统的了解一下Linux(基于Centos),本文的

              [转帖]shell带颜色的脚本

              https://www.cnblogs.com/fengzi7314/p/14139319.html 我们在写shell脚本的时候为了使输出出来的信息更加醒目一点,可以给不同状态的字体显示不同的颜色,如下: 我在这里最先定义了2个函数,log.info和log.err,一个输出正常信息为绿色,一个输