把linux命令编成.sh (二)

#字符串截取
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

#多行注释

: '    #: + 空格 + 单引号

...

'

比较稳妥的做法

<<'***'
...

***
相关文章
相关标签/搜索