Bash 每个带引号的字符串作为数组中自己的元素
我试图将Bash 每个带引号的字符串作为数组中自己的元素,bash,shell,ls,Bash,Shell,Ls,我试图将result=$(ls-Q)返回到数组的每一项都放入数组中 如果我回显结果,它看起来是这样的:“folder2”“文件夹空间”“test123”。请注意,某些项包含空格 如何将每个项目放在数组中的引号周围(引号必须保留在那里)。我期望的输出是: echo ${ARRAY[0]} --> "folder2" echo ${ARRAY[1]} --> "folder space" echo ${ARRAY[2]} --> "test 123" 如何实现这一点?不要解
result=$(ls-Q)
返回到数组的每一项都放入数组中
如果我回显结果
,它看起来是这样的:“folder2”“文件夹空间”“test123”
。请注意,某些项包含空格
如何将每个项目放在数组中的引号周围(引号必须保留在那里)。我期望的输出是:
echo ${ARRAY[0]} --> "folder2"
echo ${ARRAY[1]} --> "folder space"
echo ${ARRAY[2]} --> "test 123"
如何实现这一点?不要解析ls的输出。即使使用-Q,它也已经坏了。在我的有毒文件名目录中,我得到:
res=(*)
for f in "${res[@]}"; do echo "file: $f"; done
file: 1 file.tar.gz
file: 2 file.tar.gz
file: 3 file.tar.gz
file: 4 file.tar.gz
file: 5 file.tar.gz
file: abc3<foo.mp3
file: bb bb
file: dd dd
file: ff ff
file: file-mit"Quote"
file: m d.sh
file: regex=*a*
file: zeilen
umbruch.zip
res=(*)
对于“${res[@]}”中的f;做回显“文件:$f”;完成
文件:1 file.tar.gz
文件:2 file.tar.gz
文件:3 file.tar.gz
文件:4 file.tar.gz
文件:5 file.tar.gz
文件:abc3如下使用:
ARRAY=(*)
例如:
mkdir test
cd test
# Create file with space in name
touch 'foo bar'
# Create file with newline in name
touch 'hello
world'
files=(*)
for file in "${files[@]}" ; do
echo "name: ${file}"
done
输出:
name: foo bar
name: hello
world
mapfile-t ARRAY<如果文件名包含空格,为什么会换行?更新本身并没有错,但这不是你应该做的事情。您将从res=*得到相同的结果;对于f,以美元为单位;执行
;该阵列没有被用于任何实际用途${…[@]}
应该始终被引用,或者它与${…[*]}
没有区别。相反,让glob在数组赋值中展开(res=(*)
),然后用“${res[@]}”中的f的对正确引用的结果进行迭代;执行
。
name: foo bar
name: hello
world