shell编程基本语法

本文介绍了Shell脚本的基础知识,包括变量定义、数组操作、条件判断、循环语句以及函数的使用。通过实例展示了如何读取用户输入、执行命令、进行数值和字符串比较,并提供了数组遍历的方法。此外,还涵盖了Shell脚本中关于环境变量和特殊符号的用法。

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

定义变量a=10
引用变量/数组 可以使用大括号,多数时候大括号可以省略,在需要结合下标引用数组时大括号不可以省略掉a/a/a/{a}
打印变量echo $a
使用echo引用变量打印时,如果加单引号则不会引用变量echo $a --> 10,echo ‘$a’ --> $a,echo “”$a"" --> 10
使用echo打印时,如果加反引号则表示执行反引号里的命令,输出命令调用的结果echo `whoami` —> username
特殊值值$0 —> 表示当前文件名、$1 —> 表示第一个参数、$n —> 表示第n个参数、@/@/@/* —> 表示所有参数、KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ ---> 表示参数数量、? —> 表示脚本执行的结果 0是正常执行 其他是执行异常"
执行小括号里的命令,同时打印命令执行结果echo(cmd)、echo(whoami) —> username
计算1+1的结果$((1+1))
定义环境变量x 临时有效,若想一直生效需要在~/.vimrc里添加"export x=www
读取用户输入的内容,赋值给变量a(可不赋值)read -p ‘请输入内容’ a

if判断语句,fi结尾,cmd命令执行成功打印1,否则打印2

if cmd;then
    echo '1'
else
    echo '2'
fi

数值之间的比较
大于:gt 小于:lt
大于或等于:ge
小于或等于:le
等于:eq 不等于:ne
判断5是否大于7,是则打印1,否则打印2

if [ 5 gt 7 ]
then
    echo '1'
else
    echo '2'
fi

判断字符串a是否与字符串b相同,是则打印1,否则打印2
也可判断是否不等于!= " "if [ $a = $b ]

then
    echo '1'
else
    echo '2'
fi

判断字符串a是否大于字符串b,计算规则与Python一致,大于则打印1,否则打印2

if [[ $a>$b ]]
then
    echo '1'
else
    echo '2'
fi

接收用户输入内容,输入内容1则打印a,。输入2则打印b,输入3则打印c
case开始,esac结束

read -p '请输入内容' a
case $a in
    1)
        echo 'a'
        ;;
    2)
        echo 'b'
        ;;
    3)
        echo 'c'
        ;;
    *)
        echo '输入的操作错误'
        ;;
esac

遍历1-10,赋值i打印i
for 开始 do 执行操作 done结束

for i in `seq 1 10`
do
    echo $i
done

C语言风格的for循环
取值区间是0-10 每次运行j++是j+1,打印j

for((j=0;j<=10;j++))
do
    echo $j
done

定义函数foo,function可以省略

function foo()
foo(){
    echo 'foo里的$0':$0
    echo 'foo里的$1':$1
    echo 'foo里的$@':$@
    echo 'foo里的$#':$#
}
调用函数foo,传入参数六个分别是:a b c d e ffoo a b c d e f
数组的定义names=(hello 2 5 )
默认取数组names的第一个值echo $names —> hello
取数组names第一个值之后打印[2]echo $names[3] —> hello[3]
取出数组下标2对应的值echo ${names[3]} —> gun
获取数组里所有的值,可以使用@/*echo ${names[*]} —> hello 2 5
获取数组里值的数量echo ${names[#]} —> 2

遍历数组里的值打印

for i in ${names[@]}
do
    echo $i
done

C语言风格的for循环,取值区间是0-数组names的长度
打印下标和下标对应的内容

for((i=0;i<${#names[@]};i++))
do
    echo 下标:i,内容:${names[i]}
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值