初学shell命令(2)

传递参数
执行脚本的时候,可以向脚本传递参数,脚本内获取参数的格式为:n。 n代表一个数字, 1 为执行脚本的第一个参数, 2 为执行脚本的第二个参数… 但是参数过多,如10,就要用{}括起来,{10}

举个例子:

先创建一个脚本try.sh,内容如下

#!/bin/bash
#try
echo “脚本名:$0”
echo “第一个参数: $1”
echo “第二个参数:$2”
echo “第十个参数: 10 " e c h o " 第 十 个 参 数 : 10" echo "第十个参数: 10"echo"{10}”
echo “参数总数: $#”
echo “参数全部输出: $*”
echo “参数全部输出: $@”
运行

bash ./try.sh 1 2 3 4 5 6 7 8 9 aa 11

脚本名:./try.sh
第一个参数: 1
第二个参数:2
第十个参数:10 ----这边未加{},所以认为 $1 后面加 0
第十个参数:aa ----正确结果
参数总数: 11
参数全部输出: 1 2 3 4 5 6 7 8 9 aa 11 同"1 2 3 4 5 6 7 8 9 aa 11"
参数全部输出: 1 2 3 4 5 6 7 8 9 aa 11 同"1" “2” “3” …“aa” “11”

运算符
算数运算符
a=10;b=20
[ $a == $b ];echo $? ----1 中间有空格; $? 标识上一步的结果,如果0正确,其他数字都是错误
[ $a != $b ];echo $? ----0
c=expr $a + $b;echo $c —30
d=expr $a \* %b;echo $c —200 乘法要用\标识一下
关系运算符
主要包括以下几种:
ge 大于等于
eq 等于
ne 不等于
gt 大于
lt 小于
le 小于等于
-a 逻辑与 等价于 &&
-0 逻辑或 等价于 ||
[ $a -eq $b ];echo $? ----1 等于
[ $a -lt $b ];echo $? ----0 小于
[ $a -gt $b ];echo $? ----1 大于
[ $a -ne $b ];echo $? ----0 不等于
[ $a -le $b -a $a -eq $b ];echo $? — 1 小于等于且等于
[ $a -le $b -a $a -eq $b ];echo $? — 0 小于等于或等于
字符串运算符
主要包括以下几种:
-z 检测字符串长度是否为0,为0返回 true

-n 检测字符串长度是否为0,不为0返回true

[ str ] 检测字符串是否为空,不为空返回true

a=“hello shell”
[ -n “$a” ];echo ? − − − 0 不 为 0 , 返 回 t r u e [ − z " ? --- 0 不为0,返回true [ -z " ?00true[z"a" ];echo ? − − − 1 不 为 0 , 返 回 f a l s e [ " ? --- 1 不为0,返回false [ " ?10false["a" ];echo ? − − − 0 字 符 串 不 为 空 , 返 回 t r u e i f [ " ? --- 0 字符串不为空,返回true if [ " ?0trueif["str" ];
then
echo “不是空”;
else
echo “空字符串”;
fi -----不是空
文件测试运算符
主要包括一下几种:
-e 检测文件是否存在,存在返回true

-d 检测是否是目录,是返回true

-f 检测是否是普通文件,是返回true

-r 检测文件是否可读,如果是,则返回 true

-w 检测文件是否可写,如果是,则返回 true

-x 检测文件是否可执行,如果是,则返回 true

d=’/d/awk.txt’
[ -f $d ];echo $? ----0 d是文件,正确返回 0
[ -e $d ];echo $? ----0 文件存在,正确返回 0
[ -d $d ];echo $? ----1 是文件不是文件夹,错误返回 1
[ -r $d ];echo $? ----0 可读文件,返回 0
[ -w $d ];echo $? ----0 可读文件,返回 0

循环
if - then - else
d=’/d/awk.txt’
if [-e $d ] ---- 文件存在,所以 file exist
then
echo file exist
else
echo file not exist
fi

if [ -d $d ] ---- file
then
echo not dir
elif [ -f $d ]
echo file
else
echo over
fi
for 循环
遍历数组
a=(1 2 3 4 5 6)
for i in ${a[*]}
do
echo ${i}
done ---- 1 2 3 4 5 6

遍历文件夹
for file in ls
do
echo $file
done 2.20/ 2.22/ 2.23/ 2.26/

while 循环
a=0
while [[ $a -lt 5 ]]; ----0 1 2 3 4
do
echo ${a}
a=expr $a + 1
done

配合break a 为2的时候
a=0
while [[ $a -lt 5 ]]; ----0 1 2
do
echo ${a}
if [[ $a -eq 2 ]]
break
else
a=expr $a + 1
done

配合continue
a=0
while [[ $a -lt 5 ]]; ----0
do
echo ${a}
if [[ $a -eq 2 ]]
continue
else
a=expr $a + 1
break
done

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值