gpt4 book ai didi

bash - 如何使用 bash 脚本从用户输入中定义别名?

转载 作者:行者123 更新时间:2023-12-04 19:04:23 25 4
gpt4 key购买 nike

我希望这个问题的答案已经在这里某个地方,但我无法找到它。我浪费了太多时间搞这个。最好只是询问并继续前进。

我正在尝试创建一个(bash)shell 脚本,它在运行时会提示输入别名的名称和替换字符串,然后创建该别名。因此,作为工具库中最锋利的工具,我尝试了(实际上是从博客中复制的)下面的代码。

#!/bin/bash
echo "Enter the identifier for the alias (shortcut)"
read SHORTTEXT
echo "Now enter the string which $SHORTTEXT will alias:"
read LONGTEXT
alias $SHORTTEXT='$LONGTEXT'

我把上面的代码放到文件 ~/scripts/nojoy.sh ,使文件可执行,然后试一试。
myid@myid:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.10
Release: 11.10
Codename: oneiric
myid@myid:~$
myid@myid:~$ . ~/scripts/nojoy.sh
Enter the identifier for the alias (shortcut)
testit
Now enter the string which testit will alias:
cd ~
myid@myid:~$ alias testit
alias testit='$LONGTEXT'

然后,我花费了比我承认的更多的时间来尝试修改显然是完全错误的 alias $SHORTTEXT='$LONGTEXT'进入脚本运行时会导致创建的东西 alias testit='cd ~'当脚本运行时。

我放弃。有人可以向我解释一下如何做到这一点,以便我可以继续做比这更重要的事情吗? (比如清理垃圾箱?)

更新:

我没想到会很难为此选择答案。但是这两个答案都有效,尽管方式不同,我不确定我是否欣赏可能存在的任何潜在的微妙之处。

使用 alias $SHORTTEXT="$LONGTEXT"在我的脚本文件中连同输入字符串 find . -name '*.txt'导致 alias test='find . -name '\''*.txt'\'''
使用 eval "alias $SHORTTEXT='$LONGTEXT'"导致 alias test='find . -name *.txt'
我决定将我对我的 shell 脚本定义的别名的天真期望归结为纯文本替换。也就是说,如果我定义了一个名为 example对于 echo '*.txt'那么当我使用它时,我希望结果是 *.txt
使用第一个答案中的方法可以做到这一点。第二个答案没有。所以我选择了第一个答案,因为它更接近我认为我正在寻找的答案。

谢谢大家!

最佳答案

你得到的是单引号中的内容:

alias $SHORTTEXT='$LONGTEXT'

要求。如果你想要 $LONGTEXT扩展,使用:
alias $SHORTTEXT="$LONGTEXT"

关于bash - 如何使用 bash 脚本从用户输入中定义别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com