我有以下脚本:
#!/bin/bash
test="../t1,../t2,../t3"
ln -sf "{${test}}" .
该目录上面包含3个目录:
../
├── script
│ └── test.sh
├── t1
├── t2
└── t3
我的代码遇到的问题是它创建了一个符号链接:
t3} -> {../t1,../t2,../t3}
我期望看到的是:
t1 -> ../t1
t2 -> ../t2
t3 -> ../t3
我认为问题在于我如何避开外部集{
,}
但我似乎无法让它发挥作用。
答案1
我猜数组就是你要找的
test=(../t1 ../t2 ../t3)
ln -s "${test[@]}" .
这不会因数组成员中的空格而中断
test=("../t 1" "../t 2" "../t 3")
ln -s "${test[@]}" .
答案2
echo ${test} | awk -F, '{for(i=1; i<=NF; ++i) print "ln -s", $i}' | /bin/bash
如果字符串中没有 , 分隔符,会更容易。问题标题应该是“创建多种的来自字符串的符号链接”