加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell里面 $开头的含义,以及扩展

发布时间:2020-12-15 20:01:51 所属栏目:安全 来源:网络整理
导读:对于shell里面的set以及eval的用法: set的作用设置位置参数(同命令行脚本的传参) eval的作用是进行第二次描述 root@ubuntu:/home/xpg#set--helloshanghailianggeroot@ubuntu:/home/xpg#evalecho$$#lianggeroot@ubuntu:/home/xpg# shell里面的关于 "$"的

对于shell里面的set以及eval的用法:

set的作用设置位置参数(同命令行脚本的传参)

eval的作用是进行第二次描述

root@ubuntu:/home/xpg#set--helloshanghailiangge
root@ubuntu:/home/xpg#evalecho$$#
liangge
root@ubuntu:/home/xpg#

shell里面的关于 "$"的作用:

$0:脚本名称

如果想获得脚本的路径以及脚本的名称可以使用dirname和basename

root@ubuntu:/home/xpg#dirname/home/xpg/1.sh
/home/xpg
root@ubuntu:/home/xpg#basename/home/xpg/1.sh
1.sh

$n:输出具体的参数

$#:总几个参数

$*:和下面的$@在不带引号的情况下是一样的

$@:带上引号的区别。可以用set设置位置参数看看,这两个一般不用


$?:对上一个命令执行的判断,如果正确,为0,否则为非零

企业中使用$?的用法:

判断脚本命令,脚本是否执行成功

*若在脚本中,使用exit n来返回数字给$?

*若在函数中,使用return来返回数字给$?

$$:获得脚本的进程号

生产的上的例子就是多次执行一个脚本的时候,第一次没有执行完,第二次就要先将这个脚本的pid删除,在使用$$判断这个脚本的pid


bash shell的内置命令:

echo:

-n:不换行输出内容

-e:解析转义字符(下面用到)

n:换行

r:回车

t:tab健

b:退格

root@ubuntu:/home/xpg#echome;echoyou
me
you
root@ubuntu:/home/xpg#echo-nme;echoyou
meyou
root@ubuntu:/home/xpg#printf"logtlognpogtpogn"
loglog
pogpog
root@ubuntu:/home/xpg#echo-e"logtlognpogtpog"
loglog
pogpog
root@ubuntu:/home/xpg#echo-elogtlognpogtpog
logtlognpogtpog

exec:执行完命令会退出当前的shell的

root@ubuntu:/home/xpg#execdate
MonJan2207:07:25PST2018
xpg@ubuntu:~

关于shell变量子串知识以及实践
${变量名}:值
${#变量名}:长度
${变量名:num}:从num开始到最后,num是一个数字
${变量名:num:num1}:从num到num1之间的字符
${变量名#word}:从变量开头删除最短匹配的word子串
${变量名##word}:从变量开头删除最长匹配的word子串
${变量名%word}:从右边开始删除的
%%:从变量右边删除匹配最长匹配的word,word可以是(a*c代表是的a到c,[0-9])

${parameter/pattern/string}:使用第一个代替第一个匹配的pattern
${parameter//pattern/string}:使用string代替所有的pattern
修改文件名:
anaconda-ks.cfgstu_102_1_finished.jpg
[root@localhost~]#rename"_finished"""*.jpg
[root@localhost~]#ls
anaconda-ks.cfgstu_102_1.jpg

${parameter:-word}:如果变量值为空,则返回的是word字符

root@ubuntu:/home/xpg#echo$test

root@ubuntu:/home/xpg#echo${test:-word}
word
root@ubuntu:/home/xpg#echo${test:=word}
word
root@ubuntu:/home/xpg#echo$test
word
root@ubuntu:/home/xpg#

${parameter:=word}:和上面的一样,但是会将word的值赋给变量

${parameter:?word}:如果parameter变量值为空或者未赋值,那么word字符串被作为标准错误输出

${parameter:+word}:如果parameter的值为空,则什么也不做,否则word的值将代替变量

root@ubuntu:/home/xpg#echo$test

root@ubuntu:/home/xpg#echo${test:?nodefined}
bash:test:nodefined
root@ubuntu:/home/xpg#echo${test:+gg}

root@ubuntu:/home/xpg#test=rr
root@ubuntu:/home/xpg#echo${test:+gg}
gg
root@ubuntu:/home/xpg#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读