我知道这个问题已经被问了很多次了,但是我还是找不到任何好的解决办法。 因此,再问一次,如果有人可以帮助!
我想借助一个variables来改变我的工作目录在一个shell脚本里面。 但是我每次都得到" No such file or directory" 。
#!/bin/bash echo ${RED_INSTANCE_name} <-- This correctly displays the directory name cd $RED_INSTANCE_name <-- This line gives the error
现在,当我尝试给实际的目录名称而不是使用variables时,shell更改目录没有问题
cd test <-- No error
有谁知道这里可能是什么问题? 请帮忙 !!
Home / End键在tmux中不起作用
DIR =“$(cd”$(dirname“$ {BASH_SOURCE }”)“&& pwd)”这是如何工作的?
使用Python的os.walk函数和ls命令获得了不同的结果
Bash脚本启用mod_rewrite AllowOverrIDe All
如何删除文本文件中的特定文本
使用awk来alignment文本文件中的列?
合并同一个键的值
如何使用sed递减(减号)文件
nohup不适用于铬
脚本完成后退出屏幕
你的变量包含一个回车。 试着说:
cd $(echo $RED_INSTANCE_name | tr -d 'r')
它应该工作。 为了从变量中删除CR,你可以这样说:
RED_INSTANCE_name=$(echo $RED_INSTANCE_name | tr -d 'r')
以下将说明这个问题:
$ mkdir abc $ foo=abc$'r' $ echo "${foo}" abc $ cd "${foo}" : No such file or directory $ echo $foo | od -x 0000000 6261 0d63 000a 0000005 $ echo $foo | tr -d 'r' | od -x 0000000 6261 0a63 0000004 $ echo $'r' | od -x 0000000 0a0d 0000002
尝试
cd "$RED_INSTANCE_name"
另外,请确保路径对执行cd命令的当前目录有意义。
遇到你所描述的问题的一种方法是在变量名中加一个波浪号( ~ )。 改用绝对路径或$HOME变量。 请注意,使用$HOME将需要双引号。
# doesn't work $ vartilde='~/' $ cd $vartilde -bash: cd: ~: No such file or directory # works $ varfullpath='/Users/recurvirostrIDae' $ cd $varfullpath # works $ varwithhome="$HOME" $ cd $varwithhome
我不知道你怎么了,但我可以提供一个一般的建议:
cd "$RED_INSTANCE_name" # Quote the string in case it has spaces.error
你几乎总是把“$ VARIABLE”放在引号中。 当变量的值包含有趣的东西(如空格)时,这将防止意外。
你可以检查回车符,ANSI转义符和其他特殊字符
cat -v <<< "$RED_INSTANCE_name"
这将显示echo $RED_INSTANCE_name只会隐藏或忽略的所有字符。
特别是,如果你的错误信息是: No such file or directory ,而不是bash: cd: yourdir: No such file or directory ,这意味着你有一个回车在变量的末尾,可能是从DOS读取它格式化的文件。
总结以上是内存溢出为你收集整理的Shell脚本用variables改变目录全部内容,希望文章能够帮你解决Shell脚本用variables改变目录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)