linux下使用ffmpge指令,FFmpeg学习系列(三)Linux之shell脚本

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

shell脚本

为什么使用shell脚本?

当命令比较复杂的时候,就需要专门写一个脚本文件。

脚本举例:#下面两个是命令可直接执行

date

who

#!/bin/bash

#创建变量,如果是字符串的话,有空格的一定要用双引号,否则会被解析成命令

NDK=10

text="i love shell"

#命令的执行结果的输出作为变量的值,其中下面的 ` 是键盘中英文状态下的ESC下面那个键

text1=`date`

text2=$(who)

echo $NDK

echo $text

#字符串拼接,同理:有空格需要用双引号

echo "$text very much"

#转义字符

echo "$NDK"

echo $text1

echo $text2

输入输出重定向

输出重定向:命令的执行结果输出到test.txt文件,不再输出到屏幕上

ls -al > test.txt

shell1.png

输入重定向:wc命令是输出test.txt文本中的行数,单词数,字节数,显示在屏幕上

wc < test.txt

shell2.png

wc命令在命令行中的使用wc << EOF 然后输入一些文本,最后输入一个EOF结束

基本运算#1、使用命令,输出的结果作为c的值

#注意除号左右两边要有空格

c=$(expr $b / $a)

#2、使用方括号运算符代替expr命令

d=$[$b/$a]

echo "c:$c"

echo "d:$d"

浮点数的处理

基本运算不支持浮点数,为了支持浮点数,需要用bc命令:a=10

e=$(echo "scale=4; $a / 3" | bc)

echo "e:$e"

其中|是管道的意思,一个命令的输出作为另外一个命令的输入。

scale是自带的内建变量:#内联输入重定向,多次运算的时候

f=$(bc << EOF

scale=4

a1=($a * $b)

a1 / 3

EOF

)

命令执行退出的状态:0 成功

127 没有找到命令

1 未知错误

126 命令不可执行

查看与退出状态指定:查看上一次命令的执行状态

echo $?

在shell脚本中,自己指定退出的状态

exit 状态码

if语句

只有if命令的退出状态码为0,才会执行then部分if 命令

then

命令

fi

if语句举例:#!/bin/bash

testuser=lady

#查找passwd里面是否有对应的目录

if grep $testuser /etc/passwd

then

echo "ok"

ls -a /home/$testuser/

#如果passwd中没有目录,再判断是否有这个目录

elif ls -d /home/$testuser

then

echo "用户不存在,主目录仍然存在"

#其他情况

else

#可以继续嵌套if

#if

#then

echo "$testuser not exist"

fi

grep命令是查找命令

可以结合test命令,如果条件成立,test命令以状态为0退出,if条件成立。

test命令简单形式,用中括号,注意空格要加上,举例如下:#!/bin/bash

a=10

b=5

#test命令简单形式

if [ $a -gt $b ]

then

echo "$a greater than $b"

else

echo "$a smaller than $b"

fi

test数值比较:-gt

-eq 等于

-le

-ne 不等于

判空:#!/bin/bash

str1=""

if [ str1 = "" ]

then

echo "有内容"

else

echo "没内容"

fi

test字符串比较:str1 == str2

str1 != str2

str1 < str2

-n str1 长度是否非0

-z str1 长度是否为0

test文件比较:-d 检查是否存在,并且是一个目录

-e 检查file是否存在

-f 检查是否存在,并且是一个文件

-r 检查是否存在,并且可读

-w、-x

file1 -nt file2 file1比file2新

file1 -ot file2 file1比file2旧

举例:#!/bin/bash

mydir=/usr/jason

#-d检查目录是否存在

if [ -d $mydir ]

then

echo "$mydir exist"

cd $mydir

ls

else

echo "mydir not exist"

fi

多个条件的时候:#!/bin/bash

#多个条件 []

mydir=/usr/jason/shell

#任意数学赋值或者比较表达式

#if (( a++ > 90 ))

if [ -d $HOME ] && [ -w $mydir ]

then

cd $mydir

touch test5

else

echo "no"

fi

case命令

格式:case 变量 in

pattern1) 命令;;

pattern2) 命令;;

*) 默认命令;;

esac

举例:#!/bin/bash

testuser=rose

case $testuser in

rose)

echo "hi,$testuser";;

ricky)

echo "hello, ricky";;

*)

echo "defaults";;

esac

for循环命令

格式:for var in list

do

命令

done

举例1:#!/bin/bash

for item in 1 2 3 4 5

do

echo $item

done

举例2:#使用字符串的时候一定要注意转义字符,#、'等

list="windows--linux--macos"

#IFS字段分隔符

IFS=$--

for item in $list

do

echo $item

done

while命令

格式:while test command(或者[])

do

命令

done

举例:#!/bin/bash

a=10

while [ $a -gt 0 ]

do

echo "num:$a"

#赋值不用使用$符号

a=$[ $a - 1 ]

if [ $a -eq 5 ]

then

echo "break"

break

fi

done

注意:

编译ffmpeg

编写shell脚本之前,要执行./configure –disable-yasm,主要目的进行一系列的准备工作,比如说检查gcc的版本,会生成config.mak等文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值