我有两个 config.yml 文件,但不想使用 cron 或手动输入它们。我想将它们命名为 file1.bak 和 file2.bak。当我想运行它们时,我想输入类似 ./call.sh 或 ./call2.sh 的内容。脚本将自动获得 root 权限并将 file1.bak 更改为 config.yml 并运行它。然后它会将其更改回 file1.bak。我不想要永久的 config.yml,因为我使用两个或三个单独的文件,具体取决于我想要它们做什么。任何帮助都将不胜感激。作为参考,这是 flexget 的 config.yml 文件。我应该合并所有内容,但我喜欢单独的文件以更轻松地查找错误。ray
答案1
#!/bin/bash
mv /full_PATH/file1.bak config.yml
mv /full_PATH/file2.bak config2.yml
sudo ./config.yml
这应该可行..用“test.sh”保存此文件,然后在终端中输入./test.sh
答案2
任何 unix 用户都应该将《高级 Bash 脚本指南》作为书签,我认为它是 shell 脚本方面的圣经,我经常用它作为参考:
http://www.tldp.org/LDP/abs/html/
在不知道 flexget 是什么以及 config.yml 在此上下文中如何使用的情况下,我建议这样做:
#!/usr/bin/env bash
FILE=$1
CONFIG_PATH="/home/user/yml"
CONFIG_FILE="$CONFIG_PATH/file$FILE.bak"
if [ ! -e $CONFIG_FILE ]
then
echo "Sorry, $CONFIG_FILE does not exist"
exit 1
fi
cp $CONFIG_FILE /home/user/config.yml
sudo /home/user/config.yml
rm /home/user/config.yml
如果您想要使用 file2.bak,则可以将 2 作为参数添加到脚本中:
./call.sh 2
如果您想使用 file1.bak,请将 2 替换为 1。