Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 ZSH 中有这个测试变量:
test_str='echo "a \" b c"'
我想把它解析成两个字符串的数组("echo" "a \" b c")。
("echo" "a \" b c")
即test_str按照外壳本身的方式阅读,并返回一组参数。
test_str
请注意,我不希望分割空白或类似的东西。这实际上是关于将任意复杂的字符串解析为 shell 参数。
问题的措辞暗示了一个更简单的(?)答案。要设置 shell 参数,请使用set:
set
#!/bin/sh test_str='echo "a \" b"' eval set $test_str for i; do echo $i; done
这设置 $1为echo和$2。当然有风险,但这是便携的。当然,它不会分配给数组,但您可以按正常方式使用。a " bevalsh$@
$1
echo
$2
a " b
eval
sh
$@