第三节SHELL脚本中的变量与运算(1.6-1.7.3)

1,6常见的系统及变量

在系统中被预设变量如下

变量 说明
PATH 命令的搜索路径,以冒号作为分隔符
HOME 用户的家目录的路径,是cd命令的默认参数
COLUMNS 命令行编辑模式下可使用命令的长度
HISTFILE 命令历史的文件路径
HISTFLESIZE 命令历史中包含的最大行数
HISTSIZE history命令输出的记录数
LOGNAME|USER 当前用户的名字
SHELL 当前使用的shell
PWD 当前的工作目录
PS1 命令行提示符变量

[!note]

PATH指定命令执行路径是非常有用的

如果我想在当前用户中使用相对路径方式调用/mnt下的所有可执行文件

vim ~/.bash_profile
#在vim
PATH=$PATH:/mnt
#:wq
source ~/.bash_profile
echo $PATH
# 系统弹出
/root/.local/bin:/root/bin:usr/local/sbin:/usr/local/sbin:/usr/bin:/mnt
1,7特殊变量定义方式
1,7,1用命令的执行结果定义变量

在执行命令时如果想让指定命令优先执行可以使用$(cmd)或``

echo your hostname is hostname
# 系统弹出
your hostname is hostname
#结束

echo your hostname is $(hostname)
your hostname is lee.easylee.org

echo your hostname is `hostname`
your hostname is lee.easylee.org

My_Hostname='hostname'
my_Hostname=$(hostname)
echo $My_Hostname $mY_Hostname
lee.easylee.org lee.easylee.org
1,7,2传参变量

很多情况,shell脚本需要接受用户的输入,根据用户输入来执行不同的操作

从命令行传递给shell脚本的参数又称位置参数,shell脚步会根据参数的使用不同的位置参数变量读取他们的值

变量 说明
$# 命令行的参数的个数
$0 当前脚本的名称
$n 当前传递给脚本的第n个参数,比如$1表示脚本的第一个参数,$2表示脚步的第二个参数…
$* 以"参数1 参数2 参数3"的形式返回所有参数的值
$@ 以"参数1" “参数2” "参数3"的形式返回所有的参数的值
vim test.sh
#!/bin/bash
echo '$#' is $#
echo '$0' is $#
echo '$1' is $1
ecno '$2' is $2
echo '$3' is $3
echo '$@' is $@
echo '$*' is $*
#:wq
sh test.sh easy linux lee
$# is 3
$0 is test.ch
$1 is easy
$2 is linux
$3 is lee
$@ is easy linux lee
$* is "easy" "linu" "lee"

[!note]

$?表示上一条命令的退出值,o表示无任何问题,1-255表示命令执行报错

$$表示当前进程的pid

echo $$
#系统弹出
46058
#结束

ps
 PID TTY			TIME CMD
46058 pst/0	00:00:00 bash
46170 pst/0	00:00:00 ps

echo $?
0

ls haha
ls:Cannot access 'haha':No such file or directoty

echo $?
2
1,7,3交互式传参

利用read命令可以和脚本执行者进行交互传参

示例:

交互赋值单个变量

read A
#系统弹出接收行
hello
#结束
echo $A
#系统弹出
hello

交互赋值多个变量

read A B C
hell easylee linux

echo $A $B $C
hello easylee linux

交互赋值数组

read -a array
hello easylee linux

echo ${arry[*]}
hello easylee linux

echo ${arry[0]}
hello

echo ${arry[2]}
linux

交互赋值并显示提示符

read -p "please input word: " WORD
please input word: test

echo $WORD
test

隐藏赋值内容

read -p "please input word: " -s WORD
please input word: [root... ~]# echo $WORD
hello

设置超时时间

read -t 5 -p "please input word: " WORD

设置赋值长度

read -n 3 -p "please input word: " WORD

指定录入结束符

read -d "." a
123456.

[!note]

参数 作用
-a 读取的内容存入数组
-d 持续读取直到读入DELIM变量中的第一个字符,而不是换行符
-n/N 读取N个字符
-p 指定提示信息,用于等待输入
-r 不允许反斜杠转义任何字符
-s 从标准输入中读取密码而不在屏幕上显示输入的字符
-t 设置读取输入的超时时间,单位为秒

相关推荐

  1. 三节SHELL脚本变量运算(1.6-1.7.3)

    2024-07-16 09:02:02       25 阅读
  2. 三节SHELL脚本变量运算(2.2)

    2024-07-16 09:02:02       20 阅读
  3. linuxshell脚本变量设置、运行和置换

    2024-07-16 09:02:02       63 阅读
  4. 五节shell脚本运行流程控制(1)(2)

    2024-07-16 09:02:02       22 阅读
  5. 五节shell脚本运行流程控制(3.2)

    2024-07-16 09:02:02       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 09:02:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 09:02:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 09:02:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 09:02:02       69 阅读

热门阅读

  1. ArcGIS Pro SDK (九)几何 4 折线

    2024-07-16 09:02:02       20 阅读
  2. 如何保护你的网络安全?

    2024-07-16 09:02:02       23 阅读
  3. 北京交通大学学报-社会科学版

    2024-07-16 09:02:02       22 阅读
  4. 【AI应用探讨】—生成对抗网络(GAN)应用场景

    2024-07-16 09:02:02       26 阅读
  5. QT教程-十四, QSpacerItem(可伸缩的空间项)

    2024-07-16 09:02:02       21 阅读
  6. 初学者指南:如何搭建和配置 Nginx 服务器

    2024-07-16 09:02:02       23 阅读
  7. Canvas

    2024-07-16 09:02:02       23 阅读
  8. 增加扫地机器人的智能化功能

    2024-07-16 09:02:02       24 阅读
  9. 网络爬虫Scrapy shell 的使用和介绍

    2024-07-16 09:02:02       26 阅读