SHELL脚本中的变量与运算2

1.6.常见的系统及变量
在系统中被预设的变量如下

变量说明

PATH

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

Note
PATH指定命令执行路径是非常有用如果我想在当前用户中可以用相对路径方式调用/mnt下的所有可执行文件

]# vim ~/.bash_profile
PATH=$PATH:/mnt
# source ~/.bash_profile
# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/mnt

1.7.特殊变量定义方式1.7.1.用命令的执行结果定义变量
在执行命令时如果想让指定命令优先执行可以使用 $(cmd)或‘’

[rootalee ~l#echo your hostname is hostnameyour hostname is hostname
[root@lee ~l# echo your hostname is $(hostnameyour hostname is lee.easylee.org
[root@lee ~]# echo your hostname is hostnameyour hostname is lee.easylee.org
[root@lee ~l#My_Hostname=`hostname[root@lee ~l# mY_Hostname=$(hostnameroot@lee ~]# echo $My_Hostname $mY_Hostnamelee.easylee.org ee.easylee.org

1.7.2.传参变量
很多情况下,shel脚本需要接受用户的输入,根据用户的输入来执行不同的操作。从命令行传递给shell脚本的参数又称为叫做位置参数,shel脚本会根据参数的位置使用不同的位置参数变量读取他们的值

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

]# sh test.sheasy linux ee
$# is 3
$0 is 3
$1 is easy
$2 is linux
$3 is lee
$@ is easy linux lee
$* is easy linux lee

 Note
大家还可以试试$?和$$
$?表示上一条命令的退出值,0表示无任何问题,1-255 表示命令执行报错
$$ 表示当前进程的pid

[rootalee ~]# echo $$
46058
[root@lee ~]# pS
PID TTY         TIMECMD
46058  pts/0   00:00:00 bash
46058  pts/0   00:00:00 pS

[root@lee ~]# echo $?
0
[rootalee ~# s haha
1s:cannot access 'haha': No such file or directory
[root@lee ~l# echo $?
2

1.7.3 交互式传参
利用read命令可以和脚本执行者进行交互传参示例:
交互赋值单个变量

[root@timinglee ~]# read A
he11o
[root@timinglee ~]# echo $A
he11o

交互赋值多个变量

[root@timinglee~]#read A B C
hello easylee inux
[root@timinglee ~]#echo $A $B $C
hello easylee linux

交互赋值数组

[root@timinglee ~]# read -a array
hello easylee linux
[root@timinglee ~]# echo ${array[*]}
hello easylee linux
[root@timinglee ~]# echo ${array[0]}
he11o
[root@timinglee ~]# echo ${array[1]}
easylee
[root@timinglee ~]# echo ${array[2]}
linux

交互赋值并显示提示符

[root@lee ~]# read -p"please input word: " WORD
Please input word: test
[root@lee ~# echo $WORD
test

隐藏赋值内容

[root@timinglee ~]#read -p"please input word:"-S WORDP
lease input word:[root@timinglee ~#echo $WORD
he11o

设置超时时间

[root@timinglee ~]#read-t5-p"please input word:" WORD

设置赋值长度

[root@timinglee ~]#read-n3-p"please input word: " WORD

 指定录入结束符

[root@timinglee ~]# read -d"." a
123456.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒克1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值