<==确认了,这两个变量并不存在喔!
[dmtsai@study bin]$ sh showname.sh
Please input your first name: VBird <==这个名字是鸟哥自己输入的
Please input your last name: Tsai
Your full name is: VBird Tsai <==看吧!在 script 运作中,这两个变数有生效
[dmtsai@study bin]$ echo ${firstname} ${lastname}
<==事实上,这两个变量在父程序的 bash 中还是不存在的!
利用 source 来执行脚本:在父程序中执行
source 对 script 的执行方式会在父程序中执行的,因此各项动作都会在原本的 bash 内生效!这也是为啥你不注销系统而要让某些写入 ~/.bashrc 的设定生效时,需要使用『 source ~/.bashrc 』而不能使用『 bash ~/.bashrc 』是一样的
范例
[dmtsai@study bin]$ source showname.sh
Please input your first name: VBird
Please input your last name: Tsai
Your full name is: VBird Tsai
[dmtsai@study bin]$ echo ${firstname} ${lastname}
VBird Tsai <==嘿嘿!有数据产生喔!
13.3 善用判断式
13.3.1利用test命令测试功能
当我要检测系统上面某些文件或者是相关的属性时,利用 test 这个指令
例子:检查 /dmtsai 是否存在时
> test -e /dmtsai
执行结果并不会显示任何讯息,但最后我们可以透过 $? 或 && 及 || 来展现整个结果,
例如我
们在将上面的例子改写成这样:
> test - - e /dmtsai && echo "exist" || echo "Not exist"
其他参数:
1. 关于某个档名的『文件类型』判断,如 test -e filename 表示存在否
-e :该『档名』是否存在?(常用)
-f: 该『档名』是否存在且为文件(file)?(常用)
-d :该『文件名』是否存在且为目录(directory)?(常用)
-b :该『档名』是否存在且为一个 block device 装置?
-c :该『档名』是否存在且为一个 character device 装置?
-S :该『档名』是否存在且为一个 Socket 文件?
-p :该『档名』是否存在且为一个 FIFO (pipe) 文件?
-L :该『档名』是否存在且为一个连结档?
2. 关于文件的权限侦测,如 test -r filename 表示可读否 (但 root 权限常有例外)
-r: 侦测该档名是否存在且具有『可读』的权限?
-w :侦测该档名是否存在且具有『可写』的权限?
-x :侦测该档名是否存在且具有『可执行』的权限?
-u: 侦测该文件名是否存在且具有『SUID』的属性?
-g: 侦测该文件名是否存在且具有『SGID』的属性?
-k :侦测该文件名是否存在且具有『Sticky bit』的属性?
-s :侦测该档名是否存在且为『非空白文件』?
3. 两个文件之间的比较,如: test file1 -nt file2
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-58905-2.html
谁让你那么遭人恨呢
#给烊烊520#1128生日评论集体向520万刷起来#护千玺到远方#
luna