Bash 下划线转换为空格
在shell脚本中的一行中,我有以下内容:Bash 下划线转换为空格,bash,shell,Bash,Shell,在shell脚本中的一行中,我有以下内容: for i in `find ${DATA_DIR}/${KEYSPACE} -type d` 我已经定义: DATA\u DIR=/var/lib/cassandra/DATA KEYSPACE=test_keyspace 当我执行shell脚本时,它给出以下错误: find: '/var/lib/cassandra/data/test keyspace': No such file or directory 因此,它正在将下划线(3;)转换为
for i in `find ${DATA_DIR}/${KEYSPACE} -type d`
我已经定义:DATA\u DIR=/var/lib/cassandra/DATA
KEYSPACE=test_keyspace
当我执行shell脚本时,它给出以下错误:
find: '/var/lib/cassandra/data/test keyspace': No such file or directory
因此,它正在将下划线(3;)转换为空格()。在我的文件系统/var/lib/cassandra/data/test\u keyspace
上有一个目录,我想对其进行迭代
我也尝试了不使用变量,没有任何运气:
for i in `find ${DATA_DIR}/test_keyspace -type d`
对我来说没有问题也许这对你有帮助。所选解决方案指定您使用
$
它正在将下划线(u)转换为空格()。
什么在转换下划线?这种假设是不正确的。请参阅讨论在find
标识的路径上进行迭代的正确方法<美元(…)中项目的代码>不在其中(就此而言,它是的一部分)。(顺便说一句,对$keyspace
使用小写变量名是有意的;POSIX规定shell和实用程序对自己的变量使用所有大写名称,并保证使用小写名称的应用程序不会冒无意中修改shell或OS行为的风险;请参阅的第4段,记住在设置时,shell变量将覆盖任何类似命名的环境变量)。