shell基础学习中的字符串操作、for循环语句示例
shell基础学习中的字符串操作、for循环语句示例
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#!/bin/bashmy_name="jxq"echo$my_nameecho${my_name}#----------...

复制代码 代码如下:

#!/bin/bash

my_name="jxq"

echo $my_name

echo ${my_name}

# ------------------------------------

# 字符串操作

# ------------------------------------

# 单引号字符串的限制,双引号没有这些限制:

# 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

# 单引号字串中不能出现单引号(对单引号使用转义符后也不行)

name="will"

age=24

my_full_name='${name}${age}'

echo ${my_full_name}

my_full_name="${name}${age}"

echo ${my_full_name}

# 字符串拼接

echo ${name}${age}

# 字符串长度

echo ${#name} # 4

# substring

message="I want to be healthy"

echo ${message:2} # want to be health, 2是position

echo ${message:2:4} # want,2是position,4是len

# delete shortest match from front: ${string#substring}

echo ${message#*want}

# delete shortest match from back: ${string%substring}

echo ${message%healthy}

# delete longest match from front: ${string##substring}

echo ${message##*h}

# delete longest match from back: ${string%%substring}

echo ${message%%t*}

# find and replace: ${string/pattern/replacement}

book_name="Catch Eye Eye"

echo ${book_name/Eye/Cat}

# find and replace all match: ${string//pattern/replacement}

echo ${book_name//Eye/Cat}

file_path="/usr/local/bin"

# only replace when pattern match the beginning: ${string/#pattern/replacement}

echo ${file_path/#/usr/tmp}

# only replace when pattern match the end: ${string/%pattern/replacement}

echo ${file_path/%bin/tmp}

# string index

stringZ=abcABC123ABCabc

echo `expr index "$stringZ" C12` # Mac OSX不支持expr

# ------------------------------------

# 语句

# ------------------------------------

# if

if true

then

echo "ok, true"

fi

# 写成一行

if true; then echo "ok"; fi

var='12'

if [ $var -eq 12 ]; then

echo "This is a numeric comparison if example"

fi

if [ "$var" = "12" ]; then

echo "This is a string if comparison example"

fi

if [[ "$var" = *12* ]]; then

echo "This is a string regular expression if comparison example"

fi

name="jxq"

if [ "$name" = "jxq" ]; then

echo "hello" $name

fi

# 循环语句

for item in `ls *.sh`

do

echo $item

echo "completed"

done

# 写成一行

for item in `ls *.sh`; do echo $item; echo "completed"; done;

counter=1

while :

do

echo "bee"

let "counter=$counter+1"

if [ $counter -eq 3 ]; then

break # break/continue与Java类似

fi

done

# Case语句

opt="install"

case "${opt}" in

"install" )

echo "install..."

exit

"update" )

echo "update..."

exit

*) echo "bad opt"

esac

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新linuxshell学习
热门linuxshell学习
脚本专栏子分类