linux shell脚本常用命令

1、脚本文件内容的第一行必须要有下面的内容

#!/bin/bash

其作用是表明脚本是在什么shell下面运行的,如上是在bash中运行

2、变量无需定义,但需要注意写法

build_dir  =  "download"

这样写的话将会出现以下报错

build_dir: 未找到命令

正确写法应是(不留空格)

build_dir="download"

3、变量值的引用(变量名前加$)

build_dir="download"
echo build_dir					//输出变量名   build_dir
echo $build_dir					//输出变量的值 download

4、判断目录是否存在与创建

build_dir="download"			//定义目录名称
if [ ! -d "$build_dir" ]; 		//-d判断目录是否不存在
then							//不存在则
    sudo mkdir  $build_dir		//创建名为download的目录
fi								//if语句结束标志

5、判断目录是否存在与递归创建

build_dir="download/build/make"	//定义目录名称
if [ ! -d "$build_dir" ]; 		//-d判断目录是否不存在
then							//不存在则
    sudo mkdir -vp $build_dir	//递归创建名为download/build/make的所有目录
fi								//if语句结束标志

download/build/make嵌套了三层目录,判断目录是否存在时会有几种情况:
①download目录不存在;
②download目录存在,build目录不存在;
③download/build目录都存在,make目录不存在;
④download/build/make都存在;
而情况①②③均判断为目录不存在,进而递归创建不存在的目录。

6、输出字符串字体颜色的设置

echo -e "\033[31m Hello Word! \033[0m"

必须使用到echo命令,且调用-e参数,一头“\033[31m”,一尾“\033[0m”,参数控制输出字体的颜色。

7、判断脚本运行时传参个数

if [ $# -ne 2 ]; 			//参数个数不等于2
then
	exit 1
fi

8、字符串的整段输出

cat << EOM										//开始标志
##################################
                   Module 
##################################

You can download a Tool,a Bin or a Lib:
        1.Download Tool       
        2.Download Bin
        3.Download Lib 
EOM												//结束标志

9、读取输入参数值

read reply				//读取回来的值赋给reply
case $reply in
'q'|'Q')				//reply的值为'q'/'Q',终止脚本运行
	exit 0;;
1)						//reply的值为 1
 	echo -e "\033[32m Existing All Tool Files \033[0m"
 	break;;
2)						//reply的值为 2
 	echo -e "\033[32m Existing All Bin Files \033[0m"
 	break;;
3)						//reply的值为 3
 	echo -e "\033[32m Existing All Lib Files \033[0m"
 	break;;
esac					//case语句结束标志

10、循环语句的使用

 while true;do			//循环语句的开始标志
						//循环体
 done					//循环语句结束标志

11、判断传参是否存在

if [ -z "$1" ];			//-z判断第一个参数是否存在
then					//不存在
        path="tool"		//固定变量值
else					//存在
	    path=$1			//变量值为输入参数的值
fi						//if语句结束标志

12、将目录下的文件名称以列形式列举出来

ls /home/jiajia|sort				//格式ls 目录路径|sort

在这里插入图片描述
通常用于for循环,遍历所有目录文件

i=1											//初始化变量为1
for board in `ls $dir_path/$path|sort`;do	//for循环开始,遍历目录下所有目录文件
	name=`cat $dir_path/$path/$board/name`	//遍历到目录下name文本的内容赋给变量name
    echo -e "\t$i $name"					//在每一个name前插入序号(行号)
	let i++									//序号++
done

如上,board的值是相当于图片中/home/ysw/download路径下的目录文件名,分别是asd1、boot、libev、rootfs、SDL(每个目录下都有一个name文本),for循环的第一次board的值为asd1,第二次board的值为boot,如此类推,每一次循环都会输出name文本的内容。

13、通过行号返回对应行的目录文件名称

downfile=`ls $dir_path/$path | sed -n "${num}p"`

num的值即是行号,返回来的目录文件名称赋给downfile。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳鸽

若文章帮到你,能不能请我喝杯茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值