您的位置:首页 > 运维架构 > Shell

shell脚本之定义变量

2017-03-13 22:43 489 查看
有一些关于shell变量名的规则:

变量名可由字母数字字符(字母和数字)和下划线字符组成。

变量名的第一个字符必须是一个字母或一个下划线。

变量名中不允许出现空格和标点符号。

注意在赋值过程中,变量名,等号和变量值之间必须没有空格。那么,这些值由什么组成呢? 可以展开成字符串的任意值:

a=z                     # Assign the string "z" to variable a.
b="a string"            # Embedded spaces must be within quotes.
c="a string and $b"     # Other expansions such as variables can be
# expanded into the assignment.

d=$(ls -l foo.txt)      # Results of a command.若是在上层目录需要d=$(ls -l ../foo.txt)

e=$((5 * 7))            # Arithmetic expansion.



字符串变量

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了,哈哈),字符串可以用单引号,也可以用双引号,也可以不用引号。


单引号

str='this is a string'


单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
单引号字串中不能出现单引号(对单引号使用转义符后也不行)


双引号

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

双引号里可以有变量
双引号里可以出现转义字符


字符串操作


拼接字符串

your_name="qinjx"
greeting="hello, "$your_name" !"   //输出hello,qinjx
greeting_1="hello, ${your_name} !"   //输出hello,qinjx

greeting_1="hello, "${your_name}" !"  //输出hello,qinjx

greeting_1="hello, \"${your_name}\" !"  //输出hello,"qinjx"


获取字符串长度:

string="abcd"
echo ${#string} #输出:4  //字符串前面加#,输出字符串长度


提取子字符串

string="alibaba is a great company"
echo ${string:1:4} #输出:liba


查找子字符串

string="alibaba is a great company"
echo `expr index "$string" is`#输出:8,这个语句的意思是:找出单词is在这名话中的位置。小撇是在~下面那个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: