shell学习(1)

#!/bin/bash
#######read从屏幕输入########
echo "what is your name?"
read PERSON
echo "Hello, $PERSON"
author="yangjiao"
echo $author
######$1,$2获取的参数顺序##########
skill="Java"
echo "I am good at ${skill}Script"
echo "Language:$1"
echo "URL:$2"
###########命令替换两种方式,一种是反引号``,一种是$()#######
##########var_name=`command` 或 var_name=$(command)####
DATE_01=`date`
DATE_02=$(date)
echo $DATE_01
echo $DATE_02
LSL=`ls -l`
echo "$LSL"
#########$()嵌套###########
Fir_File_Lines=$(wc -l $(ls | sed -n '1p'))
echo $Fir_File_Lines

########echo的使用 #######
####默认会换行,不希望换行,可以加上-n参数####
name="Tom"
age=20
height=175
weight=62
echo -n "${name} is ${age} years old "
echo -n "${height}cm in height "
echo "and ${weight}kg in weight "
echo "Thank you"
####默认不会解析以反斜杠开头的转义字符,要当成普通字符,得需要加-e####
echo -e "hello 
world"

############数组的使用##########
#####用()表示数组,数组元素之间用空格来分割,不支持多维数组#########
nums=(29 30 42)
##########弱类型,并不要求所有数组元素的类型必须相同######
arr=(20 56 "test" "www.baidu.com")
echo ${nums[1]}
########用@或*可以获取数组中的所有元素###########
echo ${nums[*]}
echo ${arr[*]}
echo ${nums[@]}
echo ${arr[@]}
########获取数组长度,利用@或*将数组扩展成列表,然后使用#来获取数组元素的个数####
echo ${#nums[*]}
echo ${#nums[@]}
########如果某个元素是字符串,可以通过指定下标获取该元素的长度########
nums[5]="360.cn"
array_new=(${nums[*]} ${arr[*]})
echo ${array_new[*]}
########删除数组元素############
unset nums[0]
echo ${nums[*]}
unset nums
echo ${nums[*]}

############字符串的使用##############
#####单引号不解析字符串,双引号解析字符串######
#####字符串拼接直接放在一起即可,简单粗暴######
n=74
str1=www.baidu.com$n
str2="shell "script" $n"
str3='c语言中文网$n'
echo $str1
echo $str2
echo $str3
####获取字符串长度########
str="http://www.baidu.com"
echo ${#str}
#######字符串截取#########
######从字符串左边开始计数 ${string:start:length}############
myurl="c.biancheng.net"
echo ${myurl:2:9}
######如果省略length,截取到字符串末尾################
echo ${myurl:2}
######从右边开始计数 $(string: 0-start: length),从右边开始计数,起始数字是1,截取方向是从左到右######
echo ${myurl:0-13:9}
echo ${myurl:0-13}
#####字符串截取###############
#####使用#号可以截取指定字符(或者子字符串)$(string#*chars)############
#####其中,string 表示要截取的字符,chars 是指定的字符(或者子字符串),*是通配符的一种,表示任意长度的字符串。*chars连起来使用的意思是:
忽略左边的所有字符,直到遇见 chars(chars 不会被截取)###########
echo ${str#*:}
echo ${str#*p:}
#####如果有相同的,匹配到第一个结束######
echo ${str#*/}

 参考文档 http://c.biancheng.net/view/739.html

原文地址:https://www.cnblogs.com/kumufengchun/p/10043168.html