个人网站备案材料填写,沛县建设工程交易网,长沙装修公司哪家好,国外跨境电商平台有哪些目录
一、变量的引用
二、判断指定的文件是否存在
三、判断目录是否存在
四、判断最近一次命令执行是否成功
五、一些比较符号
六、文件的读取和写入
七、echo打印输出
八、ubuntu切换到root用户
N、其它可以参考的网址 脚本功能强大#xff0c;用起来也…目录
一、变量的引用
二、判断指定的文件是否存在
三、判断目录是否存在
四、判断最近一次命令执行是否成功
五、一些比较符号
六、文件的读取和写入
七、echo打印输出
八、ubuntu切换到root用户
N、其它可以参考的网址 脚本功能强大用起来也方便得很。本文进行记录方便以后自己查看
一、变量的引用
如下的脚本
usbcont$(lsusb | grep 1234:)
echo usb content is $usbcont
if [ $usbcont ! ]
thenecho ok
elseecho error
fi
如果usb的列表中有“1234:”字符串时usbcont的值为“Bus 004 Device 003: ID 1234:0a04”(以我的测试为例)否则它的值为空。以上可以正常打印如果列出的usb列表中有“1234:”的字符串内容则后面的if判断条件成立就打印出 ok否则变量 usbcont 的内容是空的打印出 error。开始一行也可以打印出 usb content is Bus 004 Device 003: ID 1234:0a04
如果改成如下的样子
usbcont$(lsusb | grep 1234:)
echo usbct is $usbcont
if [ $usbcont ! ]
thenecho ok
elseecho error
fi
即第2、3行的双引号改成单引号则不能正常工作就不能打印变量的值了会把$usbcont当作字符串直接打印出来usbct is $usbcont后面的if比较就永远成立了不管是否有“1234:”的usb列表内容都会打印出“ok”
这个情况在终端也是一样的 第一次采用单引号结果直接把 $usbcont 当作字符串打印了出来第二次采用双引号打印出了变量 usbcont 的值 二、判断指定的文件是否存在
if [ ! -f /data/aa.txt ]
thentouch /data/aa.txt
fi
以上示例代码如果文件 /data/aa.txt 不存在则创建它。
if [ -f /data/aa.txt ]
thenrm -f /data/aa.txt
fi
以上示例代码如果文件 /data/aa.txt 存在则删除它 三、判断目录是否存在
if [ ! -d /data/bb ]
thenmkdir /data/bb
fi
如果目录 /data/bb 不存在则创建它。
if [ -d /data/bb ]
thencd /data/bbmkdir conftouch aa.txt
fi
以上示例代码如果目录 /data/bb 存在则进入到 /data/bb然后创建目录conf和文件 aa.txt 四、判断最近一次命令执行是否成功
mount /dev/mmcblk1p1 /mnt/sd
if [ $? -ne 0 ]
thenecho Error
elseecho Ok
fi$? 表示最近一次的命令执行结果通常执行成功为0其它为失败上面示例代码中如果mount成功则打印出 Ok否则打印出 Error 字符串。
如果要卸载tf卡则
umount /mnt/sd
这样再 ls /mnt/sd 时结果就是空的了。
挂载tf卡时如果不知道其原本的节点可以通过命令来查询
fdisk -l
我的结果如下所示 最下面的 /dev/mmcblk1p1 就是tf卡的分区节点名称了
mount /dev/mmcblk1p1 /mnt/sd
注意这个是要挂载一个分区而不是上面的整个tf卡节点 /dev/mmcblk1下面的示例
mount /dev/mmcblk1 /mnt/sd
提示如下错误
mount: /mnt/sd: wrong fs type, bad option, bad superblock on /dev/mmcblk1, missing codepage or helper program, or other error. 五、一些比较符号 -ne 不等于上述第四节的示例代码表示最后一次的执行结果如果不等0就走第一个分支打印 Error -eq 等于 -gt 大于 -ge大于等于 -lt 小于 -le 小于等于
以上用于数字的比较字符串则用普通c语言的方式
if [ $a $b ] #如果a等于b则条件成立
if [ $a1 ! $b2 ] #如果a不等于b则条件成立
if [ -n $a ] #如果a 非空则条件成立
if [ -z $a ] #如果a 为空则条件成立
if [ $a ] #如果a 非空则条件成立
需要注意的是[] 的内外都要加空格比如 if [ $a $b ] 是正确的而 if [$a $b] 是不正确的
如果有多个条件可以进行连接
if [ $a ] [ $a $b ] #如果a不为空而且a和b一样则条件成立
if [ -z $a ] || [ $a ! $b ] #如果a为空或者a和b不一样则条件成立
可以通过 ! 符号来反方向判断
if [ ! $a $b ] #如果a和b不相等则条件成立
if [ -d /data/bb ] #如果目录 /data/bb 存在则条件成立
if [ ! -d /data/bb ] #如果目录 /data/bb 不存在则条件成立 六、文件的读取和写入
这里的“文件”是个代指它可以是一个实际的文件也可以是一个管脚或者是一个“设备”。
读取一个gpio管脚的值并赋给一个变量
gpio_val$(cat /sys/class/gpio/gpio123/value)
这里用cat显示它的值然后用符号$来使它可以被引用这个赋值方式和第一节中的完全一样只是命令不一样罢了。如果要向它写入一个值就比较简单了
echo 1 /sys/class/gpio/gpio123/value
通过echo命令可以方便地向任何“文件”写入内容上述示例中向gpio123管脚写入了“1”。对于不同的“文件”其允许接受的写入内容是不一样的如果是普通文件则可以写入任何内容如果是特殊的“文件”就比如上述的gpio管脚可以写入“0”、“1”但如果要写入“abcd”那必定是失败的
如果要显示一个文件的内容则 cat /data/config.txt # 输出文件 /data/config.txt 的内容 cat /sys/class/gpio/gpio123/value # 显示gpio123管脚当前的值 echo /sys/class/gpio/gpio123/value # 打印/sys/class/gpio/gpio123/value echo cat /sys/class/gpio/gpio123/value # 打印cat /sys/class/gpio/gpio123/value echo $(cat /sys/class/gpio/gpio123/value) # 打印1 由于脚本中是直接执行命令的 cd /data mkdir aa /mnt/sd/test.sh /sys/class/gpio/gpio123/value # bash: /sys/class/gpio/gpio123/value: command not found 所以如果要把一个gpio管脚的值赋给一个变量就不能是这样的 gpio_val/sys/class/gpio/gpio123/value 这样赋值之后gpio_val的值是“/sys/class/gpio/gpio123/value” 七、echo打印输出
echo的打印输出很方便可以有不同的形式 a1234 b1234 c1234 echo abc is a string #打印abc is a string echo abc is a string #打印abc is a string echo abc is a string #打印abc is a string echo a$a, b$b, c$c # 打印a1234, b1234, c1234 echo a$a, b$b, c$c # 打印a$a, b$b, c$c echo a$a, b$b, c$c # 打印a1234, b1234, c1234 echo a$a, b$b, c$c # 打印a1234, b1234, c1234 echo a$a, b$b, c$c # 打印a1234, b1234, c1234 echo a$(a) # bash输出bash: a: command not found然后打印a echo $a # 打印1234 根据实验表明变量不能放在括号内$(a)这样就不行()内必需是相关的命令才行所以对于第一节的示例来说
usbcont$(lsusb | grep 1234:)
echo usb content is $usbcont是可以正常打印的如果把第一行分开
usb_all$(lsusb)
usbcont$($usb_all | grep 1234:)
echo usb content is $usbcont则提示bash: Bus: command not found 八、ubuntu切换到root用户
一般情况下都是用普通用户登录进行操作的如果有些操作需要root用户权限可以通过命令前加 sudo 来临时提升权限 userubuntu# sudo mount /dev/mmcblk1p1 /mnt/sd 此时通常是需要输入当前用户的密码。
在有些情况下希望直接以root用户来操作可以通过如果方式切换到root userubuntu# sudo -S su 然后输入当前用户密码切换成功 rootubuntu# N、其它可以参考的网址
shell 脚本中的 -f 和 -d 是什么意思_linux shell_脚本之家LINUX Shell命令中$0、$1-9、$#、$?、$*、$、$!、$、$-、$IFS含义及举例 - 寻梦99 - 博客园linux——shell脚本中关于$和特殊变量的使用细节 - moutory - 博客园shell变量及赋值_shell变量赋值-CSDN博客
Ubunt网卡命名enp1s0的说明