字符串
單引號和雙引號的區(qū)別:
單引號
單引號里的任何字符都會原樣輸出,不解析變量;
單引號字串中不能出現(xiàn)單引號(對單引號使用轉(zhuǎn)義符后也不行)。
雙引號
雙引號里可以解析變量
雙引號里可以出現(xiàn)轉(zhuǎn)義字符
拼接字符串
[root@bogon ~]# name="jack"
[root@bogon ~]# echo "你的名字是:$name"
你的名字是:jack
[root@bogon ~]# echo "你的名字是:${name}"
你的名字是:jack
[root@bogon ~]# echo "你的名字是:""$name"
你的名字是:jack
[root@bogon ~]# echo "你的名字是:"$name
你的名字是:jack
字符串最好放到雙引號中,防止中間有空格等情況。
info="${name}""${email}""${sex}"
total="$name""$email""$sex"
獲取字符串長度
${#name}
截取子字符串
[root@bogon ~]# echo "你的名字是:"$name
你的名字是:jack
[root@bogon ~]# echo "你的名字長度是""${#name}"
你的名字長度是4
[root@bogon ~]# echo "子字符串截取""${name:1:2}"
子字符串截取ac
[root@bogon ~]# echo `expr substr "$name" 2 2`
ac
數(shù)組
定義數(shù)組
在Shell中,用括號來表示數(shù)組,數(shù)組元素用“空格”符號分割開。
# 方式一
nameArr=('zhansan' 'lisi' 'wangwu' )
# 方式二
nameArr=(
'jack'
'mary'
'andy'
)
# 方式三
nameArr[0]='芳芳'
nameArr[1]='花花'
nameArr[2]='翠翠'
讀取數(shù)組
# 索引讀取
echo '第一個姓名:'"${nameArr[0]}"
# 所有元素
echo '所有姓名:'"${nameArr[*]}"
echo '所有姓名:'"${nameArr[@]}"
數(shù)組長度
# 總長度
echo '姓名數(shù)量:'"${#nameArr[*]}"
echo '姓名數(shù)量:'"${#nameArr[@]}"
# 單個元素長度
echo '第一個姓名長度:'"${#nameArr[0]}"
echo命令
顯示轉(zhuǎn)義字符
echo "\"It is a test\""
顯示變量
echo "$name It is a test"
echo "${mouth}-1-2009"
顯示換行
echo "OK!\n"
顯示不換行
echo "OK!\c"
echo "It is a test"
顯示結(jié)果重定向至文件
echo "It is a test" > myfile
原樣輸出字符串
使用單引號。
echo '$name\"'
顯示命令執(zhí)行結(jié)果
echo `date`
printf命令
- printf 命令用于格式化輸出, 是echo命令的增強(qiáng)版。
- printf 由 POSIX 標(biāo)準(zhǔn)所定義,移植性要比 echo 好。
- 不能自動換行
- 功能和用法與 printf 命令類似
printf 命令的語法:
printf format-string [arguments...]
# format-string為雙引號
$ printf "%d %s\n" 1 "abc"
1 abc
# 單引號與雙引號效果一樣
$ printf '%d %s\n' 1 "abc"
1 abc
# 沒有引號也可以輸出
$ printf %s abcdef
abcdef
# 格式只指定了一個參數(shù),但多出的參數(shù)仍然會按照該格式輸出
$ printf %s abc def
abcdef
$ printf "%s\n" abc def
abc
def
# 如果沒有 arguments,那么 %s 用NULL代替,%d 用 0 代替
$ printf "%s and %d \n"
and 0