使用变量 bash shell 打开目录
open directory with a variable bash shell
我正在通过以下命令读入一个包含特定文件版本(例如:V1.0.10)的变量。
read Version
并且有可能该变量包含点,我通过下一个命令删除它们:
New_Version=`echo $Version | sed -e 's/\.//g'`
但是如果我稍后在脚本中使用这个变量,这个变量没有任何变化,我只使用 cd 命令:
cd /data/group/$New_Version
或
cd /data/group/"$New_Version"
然后错误:没有这样的文件或目录...:行...:cd:/data/group/V1010。
我仔细检查过,文件存在,名称正确,但他找不到或不认识目录?
我做错了什么?
希望有人能帮忙!
谢谢
更新:OP 说问题出在他输入的隐藏字符上。这个答案没有描述如何解决这个问题。尽管如此,OP 已将此答案标记为已接受。有关 OP 问题的实际解决方案,请参阅 Charles Duffy 的评论。
警告:我从字面上理解了你的问题描述中的所有内容,这导致了下面的答案。如果您提供将通过 $Version
传递的字符串的示例,这将有助于澄清问题。
据我了解,您正在使用 read Version
读取变量中文件的完整路径。现在如果你说 echo $Version
你应该得到 /path/to/foo.bar
。
我认为您不想 cd
进入文件 /path/to/foo.bar
。你会得到一个错误:Not a directory
,因为它是一个文件,而不是一个目录。
现在,考虑 sed -e /\.//g
将对路径名做什么。
echo "/path/to/foo.bar" | sed -e '/\.//g'
/path/to/foobar
/path/to/foobar
真的存在吗?不,因为 foo.bar
是一个文件。你会得到一个错误:No such file or directory
,因为 foobar
目录不存在。
如果我明白您要做什么,您正在尝试提取包含 $Version
指定文件的目录。命令 dirname /path/to/foo.bar
将 return /path/to
。所以你要设置New_version=$( dirname "$Version" )
,此时你应该可以cd $New_version
。
P.S。确保 $Version
读取的是绝对路径名,而不是相对名称,这样它就与您 运行 脚本的来源无关。
我正在通过以下命令读入一个包含特定文件版本(例如:V1.0.10)的变量。
read Version
并且有可能该变量包含点,我通过下一个命令删除它们:
New_Version=`echo $Version | sed -e 's/\.//g'`
但是如果我稍后在脚本中使用这个变量,这个变量没有任何变化,我只使用 cd 命令:
cd /data/group/$New_Version
或
cd /data/group/"$New_Version"
然后错误:没有这样的文件或目录...:行...:cd:/data/group/V1010。 我仔细检查过,文件存在,名称正确,但他找不到或不认识目录?
我做错了什么?
希望有人能帮忙!
谢谢
更新:OP 说问题出在他输入的隐藏字符上。这个答案没有描述如何解决这个问题。尽管如此,OP 已将此答案标记为已接受。有关 OP 问题的实际解决方案,请参阅 Charles Duffy 的评论。
警告:我从字面上理解了你的问题描述中的所有内容,这导致了下面的答案。如果您提供将通过 $Version
传递的字符串的示例,这将有助于澄清问题。
据我了解,您正在使用 read Version
读取变量中文件的完整路径。现在如果你说 echo $Version
你应该得到 /path/to/foo.bar
。
我认为您不想 cd
进入文件 /path/to/foo.bar
。你会得到一个错误:Not a directory
,因为它是一个文件,而不是一个目录。
现在,考虑 sed -e /\.//g
将对路径名做什么。
echo "/path/to/foo.bar" | sed -e '/\.//g'
/path/to/foobar
/path/to/foobar
真的存在吗?不,因为 foo.bar
是一个文件。你会得到一个错误:No such file or directory
,因为 foobar
目录不存在。
如果我明白您要做什么,您正在尝试提取包含 $Version
指定文件的目录。命令 dirname /path/to/foo.bar
将 return /path/to
。所以你要设置New_version=$( dirname "$Version" )
,此时你应该可以cd $New_version
。
P.S。确保 $Version
读取的是绝对路径名,而不是相对名称,这样它就与您 运行 脚本的来源无关。