shell脚本的学习1-截取字符串

shell脚本中截取字符

假设有一个字符串变量为var=http://www.aaa.com/123.html

  • 1.# 表示删除相应字符的左边字符,保留右边字符比如:
echo=${var#*//} 表示删除//左边的字符,保留右边的字符
输出为:www.aaa.com/123.html
  • 2.## 表示删除从左往右最后一个(最右边第一个)相应字符的左边字符,保留其右边的字符,比如:
echo=${var##*/}  表示删除从左往右最后一个/左边的字符,保留右边的字符
输出:123.html
  • 3.% 表示删除从右往左第一个相应字符右边字符,保留其左边的字符,比如:
echo=${var%/*}  表示删除从右往左第一个/字符后面(右边)的字符,保留其左边字符
输出:http://www.aaa.com
  • 4.%% 表示删除从右往左最后一个(最左边第一个)相应字符右边字符,保留其左边的字符,比如:
echo=${var%%/*}  表示删除删除从右往左最后一个/(最左边第一个/)的右边字符,保留其左边的字符
输出:http:
  • 5.截取相应的字符
var=http://www.aaa.com/123.html

echo ${var:0:3}  表示输出从左边开始第0个字符开始(包含第0个字符),截取长度为3的字符
输出:htt

echo ${var:7} 表示从第7个字符开始(包含第7个字符),一直到结束
输出:www.aaa.com/123.html

echo ${var:0-7:3} 表示输出从右边第7个字符以后开始(不包含第7个字符),长度为3
输出:23.

echo ${var:0-7} 表示输出从右边第7个字符开始(不包含第7个字符)以后
输出:23.html

shell传递参数

  • 1.参数的显示
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

echo "参数的个数是:$#"
echo "参数是:$*"

输出:
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

参数的个数是:3
参数是:1 2 3
  • 2.几个处理参数的特殊字符
参数说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。如” """ 1 2 n”的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@ 使, @”用「”」括起来的情况、以” 1 2” … “$n”的形式输出所有参数
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  • 3. @区别
    • 相同点:都是引用所有参数。
    • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 ” * ” 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。
#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

输出结果为:
$ bash test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

shell中的数组

#!/bin/bash

array=(A B C D)
echo "the first string is:${array[0]}"  #第一个元素
echo "all string is:${arary[*]}" #数组中全部元素
echo "all string is:${arary[@]}" #数组中全部元素
echo "the length is:${#array[*]}" #数组的长度
echo "the length is:${#array[@]}" #数组的长度

输出为:
the first string is:A
all string is:A B C D
all string is:A B C D
the length is:4
the length is:4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值