IFS:

对IFS的用处直接进行说明,详细IFS是干什么的...自行谷歌

首先创建一个 "a a",和"a"的文件:

然后我们 ls查看一下:

--> ls
a a a

是这种。

然后假如我们须要写脚本操作每个文件:

--> for i in $(ls); do echo "$i" ;done
a
a
a

可是结果确实这种,显然与我们的要求不符

由于IFS的值是空格,制表符。回车。所以这里把a a变成了2个a

可是我们改动了IFS以后例如以下:

--> OldIfs=$IFS;IFS=$'\n';for i in $(ls); do echo "$i" ;done ;IFS=$OldIfs
a
a a

嗯,这样就达到了我们的目的,这个时候是以'\n'为切割符

数组:

一个脚本进行说明:

#!/bin/bash

# *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
# > Author: xiaojunyu/LunaW
# > Mail : xiaojunyu5201314@163.com
# > Gmail : lunaw.org@gmail.com
# > Blog : http://blog.csdn.net/lunaw
# > Web : http://lunaw.org http://lunaw.net
# *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # DEPENDS:=+libsqlite3 +libcurl +libpthread +libc
# 默认选择的包
SelectPackages=(
"sed"
"gawk"
"grep"
"bc"
"luci-lib-json"
"iperf"
"tc"
"restorefactory"
"xinetd"
"n2n"
)
# 默认不选择的包 优先级强于选择的包
UnSelectPackages=(
"horst"
"vim-full"
"vim-runtime"
"qos-scripts"
"wifidog"
"libcurl"
"curl"
"tc"
"sqlite3-cli"
"libsqlite3"
)
if [[ -f .config ]]; then
for Name in `seq 1 ${#SelectPackages[*]}`
do
PackageName="CONFIG_PACKAGE_${SelectPackages[$(expr $Name - 1)]}"
if [[ `cat .config| grep "${PackageName}=y"| wc -l` == 0 ]]; then
echo -e "\e[01;31mNot Found (${PackageName}=y) "
if [[ `cat .config| grep "# ${PackageName} is not set"| wc -l` == 1 ]]; then
echo -e "\e[01;33mFound (# ${PackageName} is not set) "
sed -i "s/# ${PackageName} is not set/${PackageName}=y/g" .config
echo -e "\e[01;36mReplace (${PackageName}=y) done!"
else
echo -e "\e[01;31mNot Found (# ${PackageName} is not set) "
echo "${PackageName}=y" >> .config
echo -e "\e[01;36mAdd (${PackageName}=y) done!"
fi
else
echo -e "\e[01;33mFound (${PackageName}=y) "
fi
done
echo "--------------------------------------"
for Name in `seq 1 ${#UnSelectPackages[*]}`
do
PackageName="CONFIG_PACKAGE_${UnSelectPackages[$(expr $Name - 1)]}"
if [[ `cat .config| grep "# ${PackageName} is not set"| wc -l` == 0 ]]; then
echo -e "\e[01;31mNot Found (# ${PackageName} is not set) "
if [[ `cat .config| grep "${PackageName}=y"| wc -l` == 1 ]]; then
echo -e "\e[01;33mFound (${PackageName}=y) "
sed -i "s/${PackageName}=y/# ${PackageName} is not set/g" .config
echo -e "\e[01;36mReplace (# ${PackageName} is not set) done!"
else
echo -e "\e[01;31mNot Found (${PackageName}=y) "
echo "# ${PackageName} is not set" >> .config
echo -e "\e[01;36mAdd (# ${PackageName} is not set) done!"
fi
else
echo -e "\e[01;33mFound (# ${PackageName} is not set) "
fi
done
else
echo -e "\e[01;31mNot Found .config"
fi
echo -e "\e[01;00m+---------------------------------+"
echo -e "\e[01;00m| 不用操心,这仅仅是选择了几个包! |"
echo -e "\e[01;00m+---------------------------------+"
sleep 1

替换:

单一替换

--> XiaoName="xiaojunyu"; echo "${XiaoName/x/j}"
jiaojunyu

所有替换

--> XiaoName="xiaojunyu"; echo "${XiaoName//u/a}"
xiaojanya

删除

--> XiaoName="xiaojunyu"; echo "${XiaoName//u/}"
xiaojny

分割:

有几种方法。第一种:

XiaoCh="xiao;jun;yu"
for i in ${XiaoCh//;/ }
do
echo "$i"
done

输出:

xiao
jun
yu

可是假如是这种话:

XiaoCh="xiao;j un;yu"
for i in ${XiaoCh//;/ }
do
echo "$i"
done

输出:

xiao
j
un
yu

并非我们预料的那样。然后另外一种切割方法

IFS法:

XiaoCh="xiao;j un;yu"
OldIFS=$IFS
IFS=$';'
XiaoArr=($XiaoCh) for i in ${XiaoArr[@]}
do
echo "$i"
done IFS=$OldIFS

输出:

xiao
j un
yu

查找:

查找一个字符串是否包括还有一个字符串

--> XiaoA="abc"; XiaoB="a"; [[ "${XiaoA/${XiaoB}/}" == "$XiaoA" ]] && echo "No" || echo "Yes"
Yes
--> XiaoA="abc"; XiaoB="w"; [[ "${XiaoA/${XiaoB}/}" == "$XiaoA" ]] && echo "No" || echo "Yes"
No

最新文章

  1. gradle使用
  2. mybatis中的#{}和${}
  3. 大型网站seo优化之行业网站seo优化具体操作思路
  4. leetcode150 Evaluate Reverse Polish Notation
  5. Android微信SDK API 调用教程1
  6. 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  7. ASP.NET 共用类库1
  8. awk与cut在以空格为分割域时的区别
  9. linux命令之more
  10. Hadoop学习之自定义二次排序
  11. 「mysql优化专题」单表查询优化的一些小总结,非索引设计(3)
  12. Asp.Net Core 轻松学-实现跨平台的自定义Json数据包
  13. mysql数据库中插入数据INSERT INTO SET的优势
  14. 洛谷 P4168 [Violet] 蒲公英
  15. 基于密度峰值的聚类(DPCA)
  16. ThinkPHP 框架出现安全隐患 ,导致网站被持续攻击一周
  17. 解决 weblogic poi3.9 报错 a different type with name "javax/xml/namespace/QName"
  18. Oracle PLSQL Demo - 02.SELECT INTO单行赋值[SELECT INTO variables]
  19. Integer Numbers
  20. 53.FIB词链

热门文章

  1. Android框架简要介绍
  2. [Oracle] - Connect to a PDB of Oracle12c
  3. 防止 Chrome 屏蔽 非官方 扩展程序 教程(二)
  4. Swift String转Character数组
  5. tableview偏移
  6. 整理windows相关软件的环境变量
  7. js 判断设备的来源
  8. HDU 2955 Robberies【01背包】
  9. ZBrush中设置背面遮罩的两种方法
  10. DHCPv6,IPv6的有状态自动配置