如何将*.sh写入mv并运行文件

如何将*.sh写入mv并运行文件

我有两个 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。

相关内容