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

时间:2019-12-22 11:04:27

标签: linux bash shell unix pwd

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

$current_path='pwd'

到这一点,这是正确的,但是如果我使用以下内容:

MY_FOLDER=$current_path/subFolder1/subFolder2/MyFolder/

然后执行$MY_FOLDER我遇到一个错误:

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

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

1 个答案:

答案 0 :(得分:1)

在提示符下输入$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"
代替? (还请注意quotes,如果pwd的输出中不包含任何shell元字符,则在这种特殊情况下是可选的;但是您希望脚本在不正确的情况下也能正常工作。)