1、Shell字符串的输出
#!/bin/bash
echo "Hello World!" # 输出字符串
2、Shell变量的定义
#!/bin/bash
your_name='xiaohuo' # 定义变量
echo ${your_name} # 输出变量
your_name='fire' # 更改变量的值
echo ${your_name} # 输出更改之后的值
3、Shell设置变量为只读
#!/bin/bash
myUrl="https://www.fireitblog.com"
readonly myUrl # 设置为只读变量
myUrl="https://www.weimeistore.com" # 无法修改被readonly修饰的变量
echo ${myUrl}
4、Shell删除变量
#!/bin/bash
myUrl="https://www.baidu.com"
echo ${myUrl} # 未删除时输出变量
unset myUrl # 删除变量myUrl
echo ${myUrl} # 没有输出,为空
5、Shell定义字符串以及对字符串的操作
#!/bin/bash
echo "------------字符串的定义以及使用---------------";
str='this is s string'
echo ${str}
# 当需要输出“、‘符号时,需要使用\对"、’转义,”、‘必须成对出现
your_name='xiaobai'
str="hello \"${your_name}\"!, welcome to shell。\n" # 此处里面变量不能用',必须用",而且里面的变量修饰也必须是"
str1='hello '${your_name}'!,welcom to shell。\n' # '不需要转义字符修饰
echo -e ${str}
echo -e ${str1}
echo "---------------对字符串的操作----------------";
# 拼接字符串
your_name="xiaobai"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name}
:<<EOF
单双引号总结:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接用。
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
EOF
# 2、获取字符串长度
str="abcd"
echo ${#str} # 获取字符串的长度
# 3、截取字符串
str="hello shell, I believe you are great language!"
echo ${str:1:4} # 截取字符串,第一个字符下标的索引值0
# 4、查找字符串
str="hello shell, I believe you are great language!"
echo `expr index "$str" ol` # 查找字符串,查找o或l字符的位置,那个字母先出现计算那个,'`'此符号不是单引号,而是电脑键盘上Tab上面的一个按键
6、Shell参数传递
#!/bin/bash
# shell传递参数(脚本内获取参数的格式为:$n,n代表第几个参数
echo "Shell 传递参数实例"
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "第四个参数为:$4";
# shell注释单行多采用#注释,多行注释大部分采用:<<EOF 注释内容..... EOF
:<<EOF
$# 传递到脚本的参数个数
$* 以一个单字符显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID
$! 后台运行的最后一个进程ID
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。例:如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态,0表示没有错误,其他任何值表明出错
EOF
echo "-----$\#--\$*的使用";
echo "Shell传递参数实例";
echo "第一个参数为:$1";
echo "参数的个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
echo "-----\$*与\$@的区别";
# echo "相同点:都是引用参数";
# echo "不同点:只有使用双引号中才能体现。\"$*\"是将多个参数作为一个参数传递、\"$@\"传入多少个参数就有多少个参数传递";
echo "------\$*演示------";
for i in "$*";do
echo ${i}
done
echo "------\$@演示-------";
for i in "$@";do
echo ${i}
done