如何将包含路径字符串的变量更改为另一个路径字符串

时间:2016-12-31 13:31:12

标签: shell variables

这些天我对shell变量机制感到困惑。简而言之,我打算编写一个shell函数,它的目的是从当前路径搜索具有3层次自下而上扫描的目标目录,并在函数具有后立即返回遇到目标目录。但是,我遇到的问题是,我无法将包含路径字符串的变量更改为另一个路径字符串。

例如

#!/bin/bash

tmppath=.

${tmppath}=`pwd`

这些脚本出错。

./VariableWithPath.sh:5: no such file or directory: .=/mnt/D/Developer/WorkPlace/Personal-Workplace-Temp/shell

为什么呢?变量用于存储一些东西,之后可以更改,不是吗?如果有人能给我一个解释,我会很感激。

1 个答案:

答案 0 :(得分:0)

您需要在bash中双引词,以防止shell将其作为单独的单词吐出。我认为你需要像

这样的东西
tmppath="/some/random/path"
printf "%s\n" "$tmppath"
/some/random/path

如下所示替换变量,使用``命令替换过时,使用$(..)

tmppath="${PWD}"
printf "%s\n" "$tmppath"
/Users/name/your-current-path

您的错误语法尝试做的是在您的shell(tmppath)中展开.并添加=,其扩展值pwd变为

.=/mnt/D/Developer/WorkPlace/Personal-Workplace-Temp/shell

错误的原因是shell尝试将.之后的任何内容视为可执行文件并在当前shell中运行它并抛出这样的文件不存在。