将当前目录存储在变量中,并使用变量存储从前一个变量开发的路径



我需要将当前目录存储到一个变量中,所以我做到了:

$current_path='pwd'

到目前为止,它是正确的,但是如果我使用以下一个:

MY_FOLDER=$current_path/subFolder1/subFolder2/MyFolder/

$MY_FOLDER我收到错误

pwd/subFolder1/subFolder2/MyFolder/ : No such file or directory

你能告诉我如何在 shell 脚本中使用它吗? (这可能是基础知识,但这是我的第一个脚本(

当你在提示符下编写$variable时,shell 将插入其值并解析它。您收到的错误消息指出该值不是有效的命令名称。

此外,您第一个作业中的美元符号不正确(我猜您转录错误(,您分配的值是文字字符串pwd,它可能不是当前目录中目录的名称;我猜你打算pwd运行命令并存储其输出。

但是,Bash已经将当前工作目录存储在一个名为PWD的变量中;因此不需要单独调用外部实用程序pwd

(也许你想用反引号而不是常规的单引号'pwd'`pwd`?这将是有效的语法,尽管它已经过时了,而且正如您发现的那样,很难阅读。现代等效语法是$(pwd).(

变量名称还应避免大写;系统变量保留大写。(即使在一些受人尊敬的 shell 脚本教程中,这也是一个常见的错误。

我猜你真的想要

current_path=$(pwd)  # needless here, but shows the correct syntax
my_folder=$PWD/subFolder1/subFolder2/MyFolder/

尝试将目录作为命令运行仍然是一个错误。如果此目录包含名为foo的可执行文件,具有正确的权限,则

"$my_folder/"foo

将执行该脚本。目前尚不清楚您希望命令执行什么操作;也许你正在寻找

cd "$my_folder"

相反?(另请注意,如果pwd的输出不包含任何 shell 元字符,则在此特定情况下引号是可选的;但您希望脚本在不正确时也能正常工作。

最新更新