这些天我对shell变量机制感到困惑。简而言之,我打算编写一个shell函数,它的目的是从当前路径搜索具有3层次自下而上扫描的目标目录,并在函数具有后立即返回遇到目标目录。但是,我遇到的问题是,我无法将包含路径字符串的变量更改为另一个路径字符串。
例如
#!/bin/bash
tmppath=.
${tmppath}=`pwd`
这些脚本出错。
./VariableWithPath.sh:5: no such file or directory: .=/mnt/D/Developer/WorkPlace/Personal-Workplace-Temp/shell
为什么呢?变量用于存储一些东西,之后可以更改,不是吗?如果有人能给我一个解释,我会很感激。
答案 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中运行它并抛出这样的文件不存在。