TNND,终于到这里了
Hello World
什么经典开局
-
程序样例
[aweip@manjaro ~]$ mkdir bin; cd bin [aweip@manjaro ~]$ vim hello.sh #!/bin/bash # Program: # To shows "Hello World!" # History: # 2022/07/24 AweiP First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo -e "Hello World! \a \n" exit 0
- 第一行 #!/bin/bash 在宣告这个 script 使用的 shell 名称
- 程序内容的说明: 除了第一行的『 #! 』是用来宣告 shell 的之外,其他的 # 都是『批注』用途 ,第二行以下就是用来说明整个程序的基本数据。
- 主要环境变量的宣告 : 务必要将一些重要的环境变量设定好
- 主要程序部分 :这个例子当中,就是 echo 那一行
- 执行成果告知 (定义回传值) :利用 exit 这个指令来让程序中断,并且回传一个数值给系统
-
执行结果
[aweip@manjaro ~]$ sh hello.sh Hello World !
-
简单加减乘除求余(即+-*/%)
[aweip@manjaro ~]$ vim multiplying.sh #!/bin/bash # Program: # Inputs 2 integer numbers; program will cross these two numbers. # History: # 2022/07/24 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo -e "Input 2 numbers\n" read -p "first: " firstnu read -p "second: " secnu total=$((${firstnu}*${secnu})) echo -e "\nThe result of ${firstnu} x ${secnu} is ==> ${total}"
script 的执行方式差异 (source, sh script, ./script)
-
直接执行的方式来执行 script
sh test.sh
使用这种执行方式时, script 是在子程序的 bash 内执行 ,当test.sh 执行完毕后, 子程序 bash 内的所有数据便被移除 (变量作用域仅在fork出的子程序中)
-
利用 source 来执行脚本:在父程序中执行
source test.sh
善用判断式
利用 test 指令的测试功能
例子:test -e /dmtsai && echo "exist" || echo "Not exist"
-
关于某个档名的『文件类型』判断
测试的标志 代表意义 -e 该『档名』是否存在? (常用) -f 该『档名』是否存在且为文件(file)? (常用) -d 该『文件名』是否存在且为目录(directory)? (常用) -
关于文件的权限侦测,如 test -r filename 表示可读否 (但 root 权限常有例外)
测试的标志 代表意义 -r 侦测该档名是否存在且具有『可读』的权限? -w 侦测该档名是否存在且具有『可写』的权限? -x 侦测该档名是否存在且具有『可执行』的权限? -u 侦测该文件名是否存在且具有『SUID』的属性? -g 侦测该文件名是否存在且具有『SGID』的属性? -s 侦测该档名是否存在且为『非空白文件
.......
Comments | NOTHING