学习shell中的一些注意点记录

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

  2. {}和 ()的区别: { }用于变量替换。**一般情况下, var 与${var} 并没有啥不一样。但是用 { } 会比较精确的界定变量名称的范围; ** ( ) 与 (反引号) 都是用来做命令替换用(commandsubstitution)的。

  3. 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。例如:your_name=“runoob.com”

  4. 使用一个定义过的变量,只要在变量名前面加美元符号即可。推荐给所有变量加上花括号,这是个好的编程习惯。比如:your_name=“alibaba” echo ${your_name}

  5. 单引号和双引号定义字符串时的区别:
    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

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

  6. 获取字符串的长度:
    string=“abcd” echo ${#string} #输出 4

  7. $# 传递给脚本的参数个数

  8. $* 与 $@ 区别:
    相同点:都是引用所有参数。
    不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。
    #!/bin/bash
    echo “-- $* 演示 —”
    for i in “$*”; do
    echo $i
    done
    echo “-- $@ 演示 —”
    for i in “$@”; do
    echo $i
    done

    $ chmod +x test.sh
    $ ./test.sh 1 2 3
    – $* 演示 —
    1 2 3
    – $@ 演示 —
    1
    2
    3

  9. shell找的中括号用法:https://www.runoob.com/w3cnote/shell-summary-brackets.html

  10. 获取数组的长度: ${#my_array[*]}

  11. Shell 数组用括号来表示,元素用"空格"符号分割开

  12. 函数与命令的执行结果可以作为条件语句使用。要注意的是,和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。

最后在这儿展示一个shell脚本:

#!/bin/bash
resettem=$(tput sgr0) #将经常执行的语句定义成一个变量
declare -A ssharry #定义数组
i=0 #注意变量=等号前后没有空格
numbers=""

for script_file in `ls -I "monitor_man.sh" ./`
do
        echo -e "\e[1;35m" "The Script:" ${i} '==>' ${resettem} ${script_file}
        ssharry[$i]=${script_file}
        echo ${script_file}
        numbers="${numbers} | ${i}"
        i=$((i+1)) #$(())是用于数学计算的
done
echo $numbers

while true
do
        read -p "Please input a number [ ${numbers} ]:" execshell
        if [[ ! ${execshell} =~ ^[0-9]+ ]]
        then
                exit 0
        fi
        /bin/sh ./${ssharry[$execshell]}
done

猜你喜欢

转载自blog.csdn.net/daydayup_666/article/details/106843454