shell-script-make

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本 告诉系统说,就在当前目录找。
/bin/sh test.sh #指定解释器执行 这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
your_name="runoob.com"

注意,变量名和等号之间不能有空格

for file in `ls /etc`

for file in $(ls /etc)

以上语句将 /etc 下目录的文件名循环出来。

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo $your_name
echo ${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

推荐给所有变量加上花括号,这是个好的编程习惯。

myUrl="https://www.google.com"
readonly myUrl  ##只读变量
myUrl="https://www.runoob.com"

unset variable_name #删除变量 不能删除只读变量

字符串类型变量定义

        双引号里可以有变量,可以出现转义字符;单引号里的任何字符都会原样输出

        # 使用单引号拼接

      greeting_2='hello, '$your_name' !'

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

string="abcd"
echo ${#string} #输出 4

查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4; 反引号里表示执行命令

数组名=(值1 2 ... n),数组元素用"空格"符号分割开

${数组名[下标]};
echo ${array_name[@]} #获取所有元素
# 取得数组元素的个数
length=${#array_name[@]}


可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,
#  单行注释
:<<!
注释内容...
注释内容...
注释内容...
!



./test.sh 1 2 3  ##执行shell script时传入参数,在shell script中使用'$n'(n为一个数字)获取,'$0'默认是文件名,其后则为执行指定的参数
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$* 以一个单字符串显示所有向脚本传递的参数。
$# 传递到脚本的参数个数

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

val=`expr 2 + 2` #两数之和,还有其他算术运算
符:-、*、/、%、=、==、!=。(乘号(*)前边必须加反斜杠()才能实现乘法运算
 
== 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
!= 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
                                                   条件表达式要放在方括号之间,并且要有空格,
关系运算符

 
 
 
 
原文地址:https://www.cnblogs.com/coder1000/p/14052753.html