#字符串截取
str="string"
str=${str1 :-1} #必定要空格,这是倒数最后一个
假设有变量 str=http://www.aaa.com/123.htm.
1. # 号截取,删除左边字符,保留右边字符。
echo ${str#*//}
其中 str 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的全部字符
即删除 http://
结果是 :www.aaa.com/123.htm
2. ## 号截取,删除左边字符,保留右边字符。
echo ${str##*/}
3. %号截取,删除右边字符,保留左边字符
echo ${str%/*}
4. %% 号截取,删除右边字符,保留左边字符
echo ${str%%/*}
5. 从左边第几个字符开始,及字符的个数
echo ${str:0:5}
6. 从左边第几个字符开始,一直到结束。
echo ${str:7}
7. 从右边第几个字符开始,及字符的个数
echo ${str:0-7:3}
8. 从右边第几个字符开始,一直到结束。
echo ${str:0-7}shell
替换字符
rpe=""
match=""
output=${str/$match/$rpe}bash
#命令行执行结果保存到变量
var=`cmdLine`函数
if
if[] =,!=
fi #endif
#字符串直接不等
if[$m_dir!="swap"]
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1非空时
if 语句格式
if then
elif then
else
fispa
函数
函数名和”{“之间必须有空格,shell对空格变态的敏感
后来的声明会覆盖以前的声明 .net
function funname ()
funname () #不带任何参数。
{
action;
[return int;]
}
说明:
二、参数返回,能够显示加:return 返回,若是不加,将以最后一条命令运行结果,做为返回值
函数中,定义的变量,函数执行后,脚本执行过程都有效
local做为临时变量就没有必要将做用域声明那么广,以避免引发意想不到的冲突。
local var0命令行
#复制包括隐藏文件
cp -ax ./* /mnt/$newpart
#删除全部
rm -rf /mnt/$newpartcode
#重命名原/$m_dir目录
mv /$m_dir /$m_dir.oldhtm
对文本指定行修改
sed作用域
脚本参数为
$1
$0 ---------- 当前脚本的文件名(不带路经,带扩展名 .sh )xx.sh
$n ---------- 返回第n个参数。( n>0 )
$# ---------- 统计传入的变量个数? e.g. ./xx.sh p1 p2 ? ? 输出2
$*? ---------- 列出全部参数 。" $* " 总体列出
$@---------- 列出全部参数 。"$@" 一一列出字符串
退出脚本
exit argv #exit 1
#多行注释
: ' #: + 空格 + 单引号 ... '
比较稳妥的做法:
<<'***' ... ***