linux - 重新分配变量时 Shell 脚本无法正常运行

标签 linux shell

所以我有一个 shell 脚本,可以在目录没有为用户更改时做一些懒惰的事情。它在下面。本质上,它应该是一个 if 语句,如果用户为目录输入“默认”,它将把它们拉到文件的默认目录。但是,我在第 16 行收到一条 command not found,这是重新分配语句。

下面的整个 if 语句:

if [ $directory = "default" ];
then 
    echo Enter your ldap:
    read $ldap
    $directory = "/usr/local/home/google/${ldap}/Downloads"
fi

我也尝试过不使用美元符号...没有。这里发生了什么?刚接触 shell,也找不到之前问过的这个问题。

最佳答案

这是在 shell 中为变量赋值的方式:

directory="/usr/local/home/google/${ldap}/Downloads"
  • 没有美元 ($) 符号。
  • 等号 (=) 两边没有空格。

此外,您应该将变量括在双引号内 (")。这样,您可以避免 undefined variable 、带空格的参数等错误。


这给了我们:

if [ "$directory" = "default" ]
then
    echo "Enter your ldap:"
    read $ldap
    directory="/usr/local/home/google/${ldap}/Downloads"
fi

关于linux - 重新分配变量时 Shell 脚本无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496888/

相关文章:

linux - 如何在 Linux 中检查我的进程是否正在运行

linux - mysql 数据库主机名在哪里配置?

ruby - 为什么 bash -l -c "CMD"让 ruby 找到我的 gem ?

linux - 无法找到包裹。 Linux命令错误

c - GCC libm 不工作

linux - Logger 命令在 CentOS 中不起作用?

linux - bash shell 脚本,显示菜单驱动程序的输出

bash - 将stdout和stderr捕获到不同的变量中

linux - 如何使用unix在数据库中登录和执行命令?

linux - 如何在命令行中使用 `find` 删除文件名的扩展名(和前缀)?