我做了两个以下命令:
第一个我列出了目录的内容并将其存储在变量中。 第二个显示变量的内容。
现在我决定将列表与空格分开,而不是使用换行符,我执行以下操作:
我弄得一团糟。为什么?
值得注意的是,当我改变命令时,它按照我想要的方式工作:
有人可以解释一下,为什么0x20或32(我也试过这个号码)在这种情况下不会将Bash视为空格?
答案 0 :(得分:3)
tr
根本不识别十六进制而是八进制。这可行:
tr '\040' '\n'
显示文件的更简单方法是
shopt -s nullglob ## Optional.
printf '%s\n' *
答案 1 :(得分:2)
tr '\0x20'
的问题是,tr
将所有字符序列视为文字字符。字符为0
,x
,2
。请注意,\n
在输出中替换了所有theese字符。这就是为什么你有.t
而不是txt
。 2
也没有出现。
这是不 bash,它的 tr
让你感到不快。如果你真的想迭代文件名,可以采用更好的方法。
for f in *; do
# do work with $f. But always use quotes. Like `"$f"`
done