【.sh文件】

【.sh文件】:Shell脚本/Bash脚本

【文件权限】

r :打开并查看文件内容
w :编辑文件内容
x 执行:运行该文件

【创建】

1

touch xxx.sh
gedit xxx.sh

2
在编辑界面写入

//第一行必须有
#!/bin/bash
//后面是测试
echo "Hello World!!"
sleep 200
echo "Hello World!!"
sleep 200

3
赋予.sh文件权限
chmod +x xxx.sh
4
执行.sh文件 四种方式
$ ./test.sh 必须要有x权限->ctrl+c直接终止
$ sh test.shr权限即可
$ . test.sh / source test.shr权限即可->ctrl+c后会运行完

作为参数传给解译器

bash script.sh
启动Bash解释器,并让它读取并执行script.sh文件中所包含的命令

【基本语法】

变量

name="Anyoung"
number=5

循环:记得do...done

//循环输出1~7
for i in {1..7}
do
  echo $i
done
i=5
//循环:i是否大于3
while [ $i -gt 3 ]
do
  echo $i
  i=$((i-1))
done

条件判断:if...fi

if [ $num -gt 10 ]
then
  echo "Greater than 10"
else
  echo "Less than 10"
fi

逻辑运算符

逻辑运算式外面需要加中括号[ ]

等于 -eq / ==
不等于 -ne / !=
大于 -gt
大于等于 -ge 
小于 -lt
小于等于 -le
//想用< >=之类的需要加双括号(())
逻辑与或非 && || !

常见命令

echo输出字符串/变量值

echo "Hello, World!"
echo $name

read:从标准输入中读取用户输入

echo "What is your name?"
read name
echo "Hello, $name!"

set -e错误处理

set -e
echo "Before error"
command_not_found
echo "After error"

参数传递

image

日志 使用echo

LOGFILE=/var/log/script.log
echo "$(date) Script started" >> $LOGFILE
echo "Hello, World!"
echo "$(date) Script finished" >> $LOGFILE

image

队内代码rm_upstart内用到的.sh指令

register_service.sh

其实就是Linux文件指令

HOME_DIR=$(eval echo ~$USER_NAME)
//eval:先执行里面的指令再赋值
//~$USER_NAME:家目录
"$(id -u)" -ne 0
//id -u获取用户id
//根目录id为0
exit 1
//错误退出
chmod +x ./rm_clean_up.sh
//给**其他文件**添加可执行权限
cp ./rm_clean_up.sh /usr/sbin/
//复制文件到目录
read -r -d '' SERVICE_CONTENT << EOF
[Unit]
Description=FYT2024 Vision Project
After=network.target

[Service]
User=$USER_NAME
Type=simple
ExecStart=/usr/sbin/rm_watch_dog.sh
ExecStop=/usr/sbin/rm_clean_up.sh
Restart=always
TimeoutStopSec=10
RestartSec=10s

[Install]
WantedBy=multi-user.target
EOF

image

systemd相关

posted @ 2025-03-06 22:04  White_ink  阅读(189)  评论(0)    收藏  举报