admin

Linux学习笔记(5)
#本次笔记记录的主要是linux中shell script的编写#参考:鸟哥的私房菜基础篇第13章 sh...
扫描右侧二维码阅读全文
23
2018/06

Linux学习笔记(5)

#本次笔记记录的主要是linux中shell script的编写

#参考:鸟哥的私房菜基础篇第13章

 

shell script的几种执行方式

sh ./sh01.sh

在$PATH中之后就可以直接输入shell .sh来执行该脚本程序
有时用shell.sh无法执行,可能是因为不在环境变量中,这个时候就需要用绝对路径/home/dreamboy/shell.sh或者相对路径./shell.sh来执行 (注意前提是有x权限)

命令执行的顺序

1、以绝对/相对路径执行/bin/ls或者./ls                                                                       2、由alias找到
3、通过bash内置的builtin命令来执行
4、通过$PATH这个变量的顺序找到的第一个命令来执行

 

编写shell script时的几个注意点

列出功能、版本信息、历史、
尤其要注意对PATH的声明export PATH  
一般需要用到的PATH有/bin:/usr/bin:/sbin:/usr/sbin: ~/bin:/usr/local/bin以保证不必用绝对路径去写命令
常用的交互有read -p echo -e以及利用双引号中的$符号依旧生效

执行脚本的时候如果用sh shell.sh 那么会到子进程中执行,其中定义的变量是无法影响到父进程的,而如果用source shell.sh 则可以影响到父进程

test命令的测试功能

test 命令的测试功能如test -e /home/dreamboy 测试目录是否存在

除此之外
-f测试文件名是否存在且为文件
-d测试文件名是否存在且为目录
-r测试文件名是否存在且具有可读的全新啊
test file1 -nt file2判断file1是否比file2新
- eq判断两个数是否相等

 

中括号

中括号也可以起到判断作用[ "$HOME" == "$MAIL" ]但是要注意空格与双引号
中括号内可以有多个判别如[ "$yn" == "y" -o "$ yn" == "Y" ]但建议是用[ "$yn" == "y" } || [ "$yn" == "Y" ]来表达

shell script中默认的变量

 
$0表示执行的脚本文件名
$#表示后接的参数的个数注意是不包括脚本文件名的
$@列出所接的所有参数
$1第一个参数...以此类推                        shift: 造成参数变量号码偏移

几个常见语法

if ; then
...
elif ; then
else
fi

 

case $1 in
"hello")
echo " 123 "
;;
" ")
...                                  esac

 

定义函数function fname(){
} (和VB比较类似)(定义必须放在调用之前)

 

while [condition]
do
程序段落
done

 

until [condition]
do
程序段落
done

 

for语句biji
for var in con1 con2 con3
do
程序段落
done

 

for ((初始值;限制值;执行步长))
do
程序段落
done

 

shell script的调试

用sh -n sh01.sh查看是否有语法错

 

Last modification:March 13th, 2019 at 07:06 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment