Shell Script 结构化命令

Shell Script

script三种执行方式的区别(source, bash script, ./script)

利用bash或./来执行脚本时,该script都会使用一个新的bash环境来执行脚本内的命令
使用./来执行一个脚本时,需要check脚本是否具有可执行权限,没有需要加上
这就涉及了父进程/子进程的概念,当子进程完成后,子进程内的各项变量或操作结果将会结束而不会传回到父进程中

利用source来执行脚本,会在父进程中执行

利用判断符号[]

[ "$name" == "VBird"]
需要注意的是:
1. 在中括号内的每个组件都需要有空格键来分隔
2. 在中括号内的变量,最好都以双引号括起来
3. 在中括号内的常量,最好都以单或双引号括起来

shell script 的默认变量($0,$1…)

这些变量的意思是,在实行脚本命令是,可以通过命令后面接参数,那么一个命令就可以处理完毕而不需要手动再次输入一些变量的行为

例如: scriptname opt1 opt2 opt3 opt4
        $0       $1   $2   $3   $4
$# 可以获取后接的参数的个数
$@ 代表"$1"、"$2"、"$3"、"$4",每个变量是独立的(用双引号括起来)

条件判断式

if [ "$yn" == "Y" ] || [ "$yn" == "N" ]; then
    ...
    #exit 0
elif [ 条件判断式 ]; then
    ...
else
    ...
fi

shell允许测试linux文件系统上文件和目录的状态 e.g. -d file 检查file是否存在并是一个目录, -e检查file是否存在等

if 还支持双括号(( expression )),允许比较过程中使用高级数学表达式,如:++ ! ! **等,同时还支持模式匹配

case…esac判断

case $变量名称 in
    "第一个变量内容")
        echo "hello"
        ;;
    "第二个变量内容")
        echo "test"
        ;;
    *)
        echo "other"
        ;;
esac

利用function功能

function fname() {
    ...
}

因为shell script的执行方式是由上而下、由左而右,因此在shell script中的function的设置一定要定义在程序的最前面,这一点和c有些类似
例子:
function printit () {
    encho "Your choice is $1"
}

case $1 in
    "one")
        printit 1
        ;;
    "two")
        printit 2
        ;;
    *)
        echo "test"
        ;;
esac
可以了解到传参的方式和shell script传参方式十分类似

循环(loop)

while do done, until do done(不定循环)

while [ condition ]
do 
    ...
done
-------------------
until [ condition ]
do
    ...
done

for ... do ... done (固定循环)

方式一:
for var in con1 con2 con3 ...
do
    ...
done

1到100的循环
for sitenu in $(seq 1 100)
do
    ...
done

方式二:
s=0
for ( ( i=1; i<=$nu; i=i+1) )
do
    s=$( ($s+$i) )
done
echo "Result is $s"

shell支持通过目录路径遍历目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值