点滴记录
自古成功在尝试。

Linux中shell基本语法与常用逻辑语句

用好linux,学会Shell编程是必不可少的。

shell按自己的需求写一些小工具,可以更方便,更适合自己的使用linux。

先贴上一个小例子,新建一个test.sh:

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

接着执行脚本
./test.sh #执行脚本
/bin/sh test.sh #这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
最后bash中会输出hello。

定义变量
变量名 = 变量值
使用变量
$变量名
readonly-unset(只读,删除)
注意:
字符串可以用单引号,也可以用双引号,也可以不用引号。
双引号中的变量有效,可以有转义字符,
单引号中的变量无效,不能转义字符。
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
实例:

#!/bin/bash
name="hello this is a name"
echo ${name}
echo ${#name}//获取字符串长度
echo ${name/redhatter/rh}//替换
echo ${name:3:6}//截取
arry=(liliang lihaidong mayuying shijianlin)
echo ${arry[@]}//数组中所有变量
echo ${arry[1]}//读取数组
echo "arry length ${#people[@]}"//取数组长度
#参数处理    说明
$#     传递到脚本的参数个数
$*     以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$    脚本运行的当前进程ID号
$!     后台运行的最后一个进程的ID号
$@     与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-     显示Shell使用的当前选项,与set命令功能相同。
$?     显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

流程语句
if:

if condition1 ; then
    command1
elif condition2 ; then 
    command2
else
    commandN
fi

case:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

while.do:

while :
do

        echo "Input a num between 1 - 5"
        read num
        case $num in
                1|2|3|4|5) echo "you choice $num"
                ;;
                *) echo "you are wrong, game over."
                        break
                ;;
        esac

done

for:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while:

while condition
do
    command
done

定义函数

[ function ] funname [()]

{

    action;

    [return int;]

}
#或者
funname(){
    action;
    
    [return ; ]
}

shell中重定向

command > file  将输出重定向到 file。
command < file  将输入重定向到 file。
command >> file     将输出以追加的方式重定向到 file。
n > file    将文件描述符为 n 的文件重定向到 file。
n >> file   将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m      将输出文件 m 和 n 合并。
n <& m      将输入文件 m 和 n 合并。
<< tag      将开始标记 tag 和结束标记 tag 之间的内容作为输入

开始欢快的写小工具吧!

未经允许不得转载:日常笔记 » Linux中shell基本语法与常用逻辑语句

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址