Linux系列十-script入门

本文深入探讨bash脚本的基础知识,包括数值运算、执行方式、判断符号、默认变量、条件判断、函数与循环等内容,并通过实例展示了如何使用这些特性进行脚本编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数值运算
var=$((运算内容)) 如:var=$((3+3))
二、执行方式

直接执行:sh 、利用绝对/相对路径执行
    是在子进程的bash内执行,执行完不会将变量或操作回传给父进程
父进程中执行:source 
    source 脚本

三、判断符号[]

[ "$HOME" == "$MAIL" ] :使用示例,空白处为空格,必须加

四、默认变量

**执行的脚步文件名为$0变量,第一个接的参数就是$1,以此类推**
例:
/home/admin/startup.sh opt1 opt2 .....
        $0              $1   $2    $...
$# : 代表参数个数
$@ : 代表变量内容
$* : 代表变量,例如上述的就是"$1 $2",默认使用空格作分隔符
脚本内容:
#!/bin/bash
echo "The script name is    :$0"
echo "Total param number is :$#"
echo "Total param @         :$@"
echo "Total param *         :$*"
[ "$#" -lt 2 ] && echo "The param number is $@" && exit 0
echo "The 1st param: $1"
echo "The 2st param: $2"
执行:
rock:script cc$ sh sh02.sh test1 test2
The script name is    :sh02.sh
Total param number is :2
Total param @         :test1 test2
Total param *         :test1 test2
The 1st param: test1
The 2st param: test2

shift 参数变量号码偏移

shift 不跟数字只偏移1;跟数字n,偏移n
脚本:
#!/bin/bash
echo "The script name is    :$0"
echo "Total param number is :$#"
echo "Total param @         :$@"
echo "Total param *         :$*"
echo "shift使用了"
shift
echo "Total param @         :$@"
echo "Total param number is :$#"
echo "The script name is    :$0"
执行:
rock:script cc$ sh sh03.sh test1 test2 test3
The script name is    :sh03.sh
Total param number is :3
Total param @         :test1 test2 test3
Total param *         :test1 test2 test3
shift使用了
Total param @         :test2 test3
Total param number is :2
The script name is    :sh03.sh

五、条件判断
if…then

if [条件判断]; then
    内容
fi
脚本例子:
if [ "$?" == "0" ]; then
    echo "命令执行成功"
    exit 0
fi
----------
if [条件判断]; then
    内容
else
    内容
fi
---------
if [条件判断]; then
    内容
elif [条件判断]; then
    内容
else
    内容
fi
脚本例子:
if [ "$?" == "0" ]; then
    echo "命令执行成功"
    exit 0
elif [ "$?" == "1" ]; then
    echo "命令执行失败"
    exit 0
else
    echo "未知错误"
    exit 0
fi

case…esac

case $变量 in
    "匹配内容1")
        程序内容
        ;;
    "匹配内容2")
        程序内容
        ;;
    *)
        程序内容
        ;;
esac
脚本例子:
case $1 in
 "hello")
        echo "you input hello"
        ;;
 "")
        echo "you must input value"
        ;;
 *)
        echo "you input $1 ,but need 'hello'"
        ;;
esac

六、函数function
script的执行方式为从上而下,由左到右,function一定放在程序的最前面。
调用函数时在函数后面跟的值会作为函数的参数被所掉函数拿到,$1表示第一个,$2表示第二个,以此类推

语法:
    function fname(){
        ...
    }
例子:
    function printHello(){
        echo "hello"
    }
    printHello
    ---------
    function paramtest(){
        echo $1
    }
    paramtest "test b"
    屏幕打印出test b

七、循环
while do done

条件满足执行,直到不满足停止
while [条件判断]
do
    程序内容
done
条件不满足执行,直到满足停止
until [ 条件判断 ]
do
    程序内容
done
脚本例子:
number=0
while [ "$number" -lt 100 ]
do
 read -p "input number: " number
done

for…do…done

固定循环:
for var in con1 con2 ...
do
    程序
done
例子:
for animal in dog cat pig
do
        echo $animal
done
输出:
dog
cat
pig
数值循环
for (( 初始值; 限制值; 执行步长))
do
    程序
done
例子:
for(( i=1;i<100;i=i+1))
do
    echo $i
done

八、script的追踪与调试

sh [-nvx] 脚本
 -n 不执行,查询语法问题
 -v 执行前,将脚本内容输出到屏幕
 -x 将使用到的脚本内容输出到屏幕
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值