Shell 脚本错误

Shell 脚本错误

首先,我的桌面环境是 GNOME。我编写了一个脚本来创建自动启动程序的桌面文件。但是,我得到了错误。

Make Autostart Script
Name > nabi // I input nabi
./make_autostart_script: line 11: ~./config/autostart/nabi.desktop: No such file or directory
Descriptive Name > 

代码如下

# !/bin/bash
# This script make autostart script

echo Make Autostart Script

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~./config/autostart/$name.desktop

# Generic Name
echo -n "Descriptive Name > "
read generic_name
echo "GenericName=$generic_name" >> ~/.config/autostart/$name.desktop

# Comment
echo -n "Comment > "
read comment
echo "Comment=$comment" >> ~/.config/autostart/$name.desktop

# Exec
echo -n "Location of program > "
read exec
echo "Exec=$exec" >> ~/.config/autostart/$name.desktop

# Terminal
echo -n "Do you want to execute it in terminal?(Y/n) > "
read yn
if [$yn -eq y];then
        echo "Terminal=true" >> ~/.config/autostart/$name.desktop
else
        echo "Terminal=false">> ~/.config/autostart/$name.desktop
fi

# Type
echo "Type=Application" >> ~/.config/autostart/$name/desktop

# Autostart
echo "X-GNOME-Autostart-enabled=true"

我该如何解决这个问题?

答案1

该行中的~./config应该是~/.config

答案2

上下文中显示的问题:

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~./config/autostart/$name.desktop

应该:

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~/.config/autostart/$name.desktop

变化内容如下(以粗体强调):

echo "Name=$name" >>~/.config/autostart/$name.desktop

它指向位于.config您的主目录中的一个名为的文件夹(~简称)

而不是:

echo "Name=$name" >>~./config/autostart/$name.desktop

它指向一个不存在的目录~.(除非您有一个名为的用户.,它将指向.的主文件夹)

另外需要注意的是:

看起来您将在部分遇到错误# 类型

# Type
echo "Type=Application" >> ~/.config/autostart/$name/desktop

应该

# Type
echo "Type=Application" >> ~/.config/autostart/$name.desktop

如果我没记错的话。(区别在于替换$name/desktop$name.desktop

对于第 31 行:

if [$yn -eq y];then至少应该if [ $yn = y ]; then 但可能更合适

if [ "$yn" = "y" ] || [ "$yn" = "Y" ];then

如果您输入 Y 或 y,它将覆盖。请注意,使用-eq用于数字比较,在这种情况下不起作用。

希望对您有所帮助!祝您编码愉快。

相关内容