shell脚本样例
总结常用的 34 个 Linux Shell 脚本_shell脚本 列表-优快云博客
使用shell进行程序设计的原因之一是。
你可以快速、简单地完成编程。
哲学:
Linux 具备自动文件类型处理功能,所以使用这些工具 的用户
一般不必了解它们是用哪种语言编写的。
如果想要这些工具运行得更快,常见的做法是首先在shell中实现
工具的原型,一旦确定这么做,然后再用C或者C++、Perl或者
其他执行得更快的语言来重新实现它们。
如果 在shell中这些工具工作得已足够好,就不必再重新实现它们 。
变量:
在 shell里,变量是以字符串的形式存储,
你可以通过在变量名前加一个$符号来访问它的
内容。
使用引号:
一般情况下,脚本文件中的参数,以空白
人
文件系统
权限一般为 755
新建文件并写入字符串
方法一
echo -e "deb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main \ndeb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ focal main" |tee /etc/apt/sources.list.d/ros2.list
方法二
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ong59qnk.mirror.aliyuncs.com"]
}
EOF
shell 自动发送
#!/bin/sh -e
while [ 1 ]
do
cat /dev/ttyS3
usleep 500000
done
shell 自动替换
sed -i 's/enforcing/permissive/g' /system/etc/selinux/config
shell 中命令循环执行
i=0; while true; do echo "zr $i"; i=$((i+1)); sleep 3; done
查看当前cpu线程
NUM_CPUS=$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)
getconf -a //查看所有参数
超链接与if判断
#!/bin/bash
board=$1
echo "#############################################"
echo "########### set board dts #############"
echo "########### hd03047a hd06p6a ##############"
echo "#############################################"
if [ "$board" = "hd03047a" ]; then
ln -s hd03047a_nm10.dts kernel/arch/arm64/boot/dts/cuser/nm10.dts
elif [ "$board" = "hd06p6a" ]; then
ln -s hd06p6a_nm10.dts kernel/arch/arm64/boot/dts/cuser/nm10.dts
else
echo "unknow board $board"
exit 0
fi
echo "###############set finish###################"
输出字符串至指定行
linux中 echo添加多行内容到从倒数第二行开始_香奈儿的技术博客_51CTO博客
在文件后添加字符串
function enable_core_dump() {
echo "enable core dump config"
# 在/etc/security/limits.conf文件的"# End of file"之前加入内容
{
¦ grep -v '^#' ./limits.conf # 排除注释行,获取所有配置行
¦ echo "admin hard core unlimited"
¦ echo "root hard core unlimited"
¦ echo "admin soft core unlimited"
¦ echo "root soft core unlimited"
} | awk '
/^# End of file/{print; exit} # 如果是"# End of file"行,则打印并退出
{ print } # 打印其他所有行
' | sudo tee ./limits.conf > /dev/null
}
shell脚本错误处理
set -eE
是Bash脚本中的一个选项,用于设置脚本的执行行为。具体来说,set -e
表示如果任何命令执行失败(返回非零状态),脚本将立即退出;而set -E
则表示如果任何命令执行失败,并且该命令是管道(pipe)的一部分,脚本也会立即退出。这两个选项通常一起使用,以确保在各种情况下都能及时处理错误
err_handler()
{
ret=$?
[ "$ret" -eq 0 ] && return
echo "ERROR: Running ${FUNCNAME[1]} failed!"
echo "ERROR: exit code $ret from line ${BASH_LINENO[0]}:"
echo " $BASH_COMMAND"
exit $ret
}
#发生错误时的处理函数
trap 'err_handler' ERR
set -eE
shell脚本挂载硬盘
blkid字段
#!/bin/sh -e
#
if [ ! -d "/mnt/reserve"];then
mkdir /mnt/reserve
else
echo "/mnt/reserve is mkdir"
fi
fs_format=$(blkid |grep "/dev/mmcblk2p5"|awk '/ext4/ {print $3}')
v1=$(echo $fs_format |cut -c7-10)
if [ "$v1" != "ext4" ]; then
mkfs.ext4 /dev/mmcblk2p5
echo "will mkfs.ext4 /dev/mmcblk2p5 and mount to /mnt/reserve"
mount /dev/mmcblk2p5 /mnt/reserve
chmod 777 /mnt/reserve -R
fi
v2=$(cat /etc/fstab |grep "/mnt/reserve"|awk '/ext4/ {print $2}')
if [ -z "$v2" ];then
echo "will set /etc/fstab"
file_count=$(blkid |grep "/dev/mmcblk2p5"|awk '/ext4/ {print $2}')
v3=$(echo $file_count |sed -r 's/.*"(.+)".*/\1/')
echo "UUID=$v3 /mnt/reserve ext4 defaults,nofail 0 2" > /etc/fstab
mount /dev/mmcblk2p5 /mnt/reserve
chmod 777 /mnt/reserve -R
fi
exit 0