function-array--字符串截取--mktemp--install

function:函数

过程式编程;代码重用

模块化编程

结构化编程

语法一:

funcion f_name{

函数体

}

语法二:

f_name (){

函数体

}

调用:函数只有被调用才会执行:

函数的生命周期;被调用时创建,返回时终止

return命令返回自定义状态结果:

0;成功

1-255;失败

#!/bin/bash

#

function adduser {

if id $username &> /dev/null ;then

echo "$username exists."

return 1

else

useradd $username

[ $? -eq 0 ] && echo "ADD $username finished." && return 0

fi

}

for i in {1..10};do

username=myuser$i

adduser

done

函数可以接受参数:

传递参数给函数:调用函数时,在函数后面以空白分隔给定参数列表:例如“testfunc arg1 arg2.。”

在函数体重可以$1 ,$2...调用这些参数;还可以使用[email protected],$*,$#等特殊变量

#!/bin/bash

#

declare -i i=6

f1(){

local i=9 #函数内的局部变量

let i++

echo "Function:$i"

}

f1

echo "Main:$i"

函数递归:

函数直接或间接调用自身:

求阶乘

#!/bin/bash

#

fact() {

if [ $1 -eq 0 -o $1 -eq 1 ];then

echo 1

else

echo $[$1*$(fact $[$1-1])]

fi

}

fact $1

裴波那契数列

#!/bin/bash

#

fab(){

if [ $1 -eq 1 ]; then

echo 1

elif [ $1 -eq 2 ];then

echo 2

else

echo $[$(fab $[$1-1])+$(fab $[$1-2])]

fi

}

fab $1

bash脚本编程:

变量:存储单个元素的内存空间

数组:存储多个元素的连续的内存空间;

数组名:

索引:编号从0开始,属于数值索引:

注意:索引也可以支持使用自定义的格式,而不仅仅是数值格式。

引用数组中的元素:${array_name[index]}

声明数组:

declare -a array_name

declare -A array_name:关联数组:kv

数组元素的赋值;

(1)一次只赋值一个元素;

ARRAY_NAME [INDEX]=VALUE

weekdays[0]="Sunday"

weekdays[4]="Thursday"

(2)一次赋值全部元素:

ARRAY_NAME=(“VAL1”"VAL2""VAL3"...)

(3)只赋值特定的元素:

ARRAY_NAME=([0]="VAL1" [3]="VAL2"...)

(4)read -a ARRAY

引用数组中的元素:${array_name[in]}

注意:省略[index]表示引用下标为0的元素;

数组的长度:${#ARRAY_NAME[*]},${#ARRAY_NAME[@]}

生成10个随机数,并找出最大值;

#!/bin/bash

#

declare -a rand

declare -i max=0

for i in {0..9};do

rand[$i]=$RANDOM

echo ${rand[$i]}

[ ${rand[$i]} -gt $max ] && max=${rand[$i]}

done

echo "Max: $max"

写一个脚本,定义一个数组,数组中的元素是/var/log目录下所有以.log结尾的文件:统计其下标为偶数的文件中的行数之和;

#!/bin/bash

#

declare -a files

files=(/var/log/*.log)

declare -i lines=0

for i in $(seq 0 $[${#files[*]}-1]); do

if [ $[$i%2] -eq 0 ];then

let lines+=$(wc -l ${files[$i]} | cut -d‘ ‘ -f1 )

fi

done

echo "lines:$lines."

引用数组中的元素;

所有元素:${array_name[*]},${array_name[@]}

${ARRAY[@]:offset:number}

offset:要跳过个的元素个数

number:要取出的元素个数,取偏移量之后的所有元素 ${ARRAY[@]:offset}

向数组中追加元素;

ARRAY[${#ARRAY[*]}]

删除数组中的某个元素;

unset ARRAY[INDEX]

关联数组;

declare -A ARRAY_NAME

ARRAY_NAME=([index_name1]=‘val1‘ [index_name2]=‘val2‘.... )

bash的字符串处理工具;

字符串切片:${var:offset:number}

name="obkjl"

echo ${name:1:3}

echo ${name:1}

echo ${name: -3} 冒号后面必须有个空格,表示从右侧开始取

基于模式取子串;

从左到右

${var#*word}:第一次匹配到word之后的部分,之前部分删除

${var##*word}:最后一次匹配到word.之前的部分删除

从右到左

${var%word*}

file="/etc/httpd/conf/httpd.conf"

echo ${file%/*}

${var%%word*}

查找替换;

${var/pattern/substi}:查找var中,第一次出现pattern所匹配的字符串,用substi替换

${var//pattern/substi}:查找var中,所有出现pattern所匹配的字符串,用substi替换

${var/#pattern/substi}:查找var中,行首出现pattern所匹配的字符串,用substi替换

${var/%pattern/substi}:查找var中,行尾出现pattern所匹配的字符串,用substi替换

查找并删除:没有写明替换内容substi,则为删除操作

${var/pattern}:查找var中,删除第一次出现pattern所匹配的字符串

${var//pattern}

${var/#pattern}

${var/%pattern}

字符大小写转换;

${var^^}把var中所有的小写转换为大写

${var,,}把var中所有的大写转换为小写

变量赋值:

${var:-value}:如果var为空或者未设置,那么返回value;否则返回var的值

${var:=value}:如果var为空或者未设置,那么返回value;并将values赋值给var,否则,则返回var的值

${var:+value}:如果var不空,则返回value;

${var:?error_info}:如果var为空或者未设置,返回err_info:否则,返回var的值;

在脚本中读取配置文件

定义文本文件,每行定义“name=value”

在脚本中source此文件即可

命令:

mktemp命令:创建临时文件

mktemp /tmp/test.xxx

tmpfile=${mktemp /tmp/test.XXX}:引用

mktemp -d /tmp/test.xxx 创建临时目录

--tmpdir=/path/to/somedir:指明临时文件路径

install命令

install [OPTION]... [-T] SOURCE DEST

install [OPTION]... SOURCE... DIRECTORY

install [OPTION]... -t DIRECTORY SOURCE...

install [OPTION]... -d DIRECTORY...

install可以在复制的同时指定权限,属主,组等

-m mode

-o owner

-g group

时间: 2024-11-10 14:26:43

function-array--字符串截取--mktemp--install的相关文章

php 中文字符串截取乱码

PHP截取字符串如果是英文直接用substr就可以了,但对于中文字符,用substring可能会导致乱码,那么将如何解决呢? 1.通过函数mb_substr实现 说明:mb_substr($str, $start, $length, $encoding);通过该函数即可,但需要加载php_mbstring.dll扩展. 案例: <?php  $str = '这是一个字符串切割函数';  echo "mb_substr:".mb_substr($str, 0, 7, 'utf-8'

改造phpcms-v9自带的字符串截取函数

1.phpcms-v9自带的字符串截取函数在phpcms/libs/functions/global.func.php文件中: /** * 字符截取 支持UTF8/GBK * @param $string * @param $length * @param $dot */ function str_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $stri

PHP字符串截取,计算字符串长度

1 /** 2 * 字符串截取,支持中文和其他编码 3 * @param [string] $str [字符串] 4 * @param integer $start [起始位置] 5 * @param integer $length [截取长度] 6 * @param string $charset [字符串编码] 7 * @param boolean $suffix [是否有省略号] 8 * @return [type] [description] 9 */ 10 function msubs

中英文字符串截取类

<?php /** * description:中英文字符串截取 * @author :SunsCheung * @date:2015-09-24 */ class Helper{ public static function truncate_utf8_string($string, $length, $etc = '...') { $result = ''; $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES,

收藏几个支持中文的PHP字符串截取函数

字符串截取是一个非常常见的编程任务,而往往带中文的字澳门赌场玩法符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了. <?php function sysSubStr($string,$length,$append = false) { if(strlen($string) <= $length ) { return $string; } else { $i = 0; while ($i < $length) { $st

PHP字符串截取操作大全

1. 截取GB2312中文字符串 <?php header("content-type:text/html;charset=gb2312"); // echo "aaaa"; //截取中文字符串 ### 1. 截取GB2312中文字符串 function mysubstr($str,$start,$len){ $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen

php 中文字符串截取方法解析

用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: 1.使用mbstring扩展库的mb_substr截取就不会出现乱码了. 2.自己书写截取函数,但效率不如用mbstring扩展库来得高. 3.如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0). substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这

一个关于字符串截取输出的例子

要求:给定字符串"1234"或者"12345",输出以下序列. output-> "1234","123","234","12","23","34","1","2","3","4"  "12345","1234","

PHP字符串截取

//字符串截取 function utf8_substr($str, $start, $length) { $i = 0; //完整排除之前的UTF8字符 while($i < $start) { $ord = ord($str{$i}); if($ord < 192) { $i++; } elseif($ord <224) { $i += 2; } else { $i += 3; } } //开始截取 $result = ''; while($i < $start + $leng

java中文字符串截取

/** * author geksong <br/> * function 中文字符串相关操作<br/> **/ public class ChinaStringUtil { /** * 判断字符是不是中文字符 * @param c * @return */ public static boolean isChinese(char c) { int ascii = (int)c; if(ascii >= 0 && ascii <= 255) return