shell脚本注意点

1.等号两边不能有空格,例如:数组

获取七天前的日期:函数

before_7_day=`date -d "7 days ago" +%Y-%m-%d`

 2.自定义函数只能返回数值,不能返回数组、字符串等内容。若是须要生成字符串等结果,能够声明为全局变量,而后将值赋给全局变量,这样就能够在函数外访问ui

get_string(){
    number1=1
    number2=2
    return $number1-$number2
}

返回错误:spa

return: 1-2: numeric argument required

 修改:code

number

get_string(){
    number1=1
    number2=2
    number=$number1-$number2
}

 3.字符串拼接不用“+”blog

例如:字符串

若是使用“+”:get

name1="chun"
name2="tian"
echo $name1+$name2

输出为:string

chun+tian

修改成:for循环

name1="chun"
name2="tian"
echo ${name1}${name2}

输出:

chuntian

 4. for循环使用

 

5.${ }、#、##、%、%%使用范例

假设定义了一个变量为,【代码以下】:

file=/dir1/dir2/dir3/my.file.txt

能够用${ }分别替换获得不一样的值:

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt

${file#*.}:删掉第一个 .  及其左边的字符串:file.txt

${file##*.}:删掉最后一个 .  及其左边的字符串:txt

${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)

${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my

 

【记忆的方法为】:

# 是 去掉左边(键盘上#在 $ 的左边)

%是去掉右边(键盘上% 在$ 的右边)

单一符号是最小匹配;两个符号是最大匹配

${file:0:5}:提取最左边的 5 个字节:/dir1

${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

也能够对变量值里的字符串做替换:

${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将所有dir 替换为 path:/path1/path2/path3/my.file.txt

转自:https://blog.51cto.com/ganbing/2053565

相关文章
相关标签/搜索