1.概念:Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
所谓脚本,在最简单的情况下,不过是存储在一个文件里的系统命令列表。
2.bash脚本头部: #!/bin/bash
echo:用于向窗口输出文本;
第一个脚本:
#!/bin/bash
echo "hello word"
运行脚本:
1.作为可执行代码运行:
保存为.sh文件
cd 相应目录/直接将sh文件拖到终端
chmod +x ./test.sh (使脚本具有执行权限)
./test.sh (执行脚本)
!!!如果报错Permission denied,代表没有权限;
在设置权限命令时如果报错 No such file or directory,是因为路径找不到,将./test.sh改为完整的路径,如/Users/myshell/test.sh 这样;或者chmod 777 /Users/myshell/test.sh
执行脚本也改为完整路径;
便可以看到终端输出hello word
2.作为解释器参数:
/bin/sh test.sh
同样如果是报错 No such file or directory也是需要将路径补全
3. Shell变量
eg: file_name="runoob.com"
!!!变量名与=之间不能存在空格
命名规则:只能使用英文字母,数字和下划线,首个字符不能以数字开头;
中间不能有空格,可以使用下划线(_);
不能使用标点符号以及bash关键字;
使用变量:${变量名} {}可选,加{}是为了帮助解释器识别变量的边界;但最好加上{}
修改一下脚本:
#!/bin/bash
first_word="hello word"
echo ${first_word}
echo $first_word
运行结果一样;
只读变量:readonly 命令定义只读变量;
readonly first_word
删除变量:unset命令定义删除变量,删除后不能再次使用 !!!不能删除只读变量
unset first_word
4.Shell字符串 单引号/双引号都行 但是!!!双引号中可以使用转义字符和变量,单引号不行
#!/bin/bash
first_word="hello word"
str='this is a string'
str2="this is a \"$first_word\" !"
echo ${first_word}
echo $str
echo $str2
字符串拼接:
your_name="John"
str="hello,"$your_name" !"
str_1="hello,${your_name} !"
echo $str $str_1
输出结果hello,John ! hello,John !
获取字符串长度:在str前添加#
echo ${#str}
提取子字符串:
echo ${str:1:4} #指从第二个字符开始截取4个字符ello
查找字符串:
echo `expr index "str" io` . #查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
5.Shell数组 支持一维数组
定义数组:数组名=(值1 值2 ....值n)
读取数组:${数组名[下标]}
用@符号可以获取数组中所有元素,${数组名[@]}
获取数组长度:length=${#array_name[@]} 或 length=${#array_name[*]}
取数组单个元素的长度:lengthn=${#array_name[n]}
array_name=(value1 value2 value3 value4)
value2=${array_name[2]}
length=${#array_name[@]}
length3=${#array_name[3]}
echo ${value2} #value3
echo ${length} #4
echo ${length3} #6
6.Shell注释 #开头相当于//
多行注释:
:<<EOF
注释内容... 注释内容... 注释内容... EOF
或者
:<<! 注释内容... 注释内容... 注释内容... !