【发布时间】:2011-05-22 08:14:14
【问题描述】:
我创建了一个简单的 Bash 脚本,它应该在 /usr/local/{etc,lib,include...} 从输入的目录路径中创建符号链接
#!/bin/sh
input="$1"
for subdir in "etc include bin lib man share sbin"; do
dir=$input/$subdir
if [ -e $dir ] && [ -d $dir ]; then
for file in $dir/*; do
ln -s $file /usr/local/$subdir
done
fi
done
我得到的错误是:
user@comp:/usr/local# ./update-locallinks /usr/local/test/
[: 6: /usr/local/test/etc: unexpected operator
这就是 /usr/local/test/ 的样子:
user@comp:/usr/local# ls /usr/local/test/
bin
etc
include
lib
【问题讨论】:
-
我不确定,但请尝试使用 dir="$input/$subdir" 而不是 dir=$input/$subdir
-
在第二行添加
set -x并粘贴输出 -
@Troydm,我试过了,但没有用,但还是谢谢!
-
顺便说一句,这不是minimal reproducible example,而是包含一堆与问题无关的代码,这意味着我不能在不问他们的情况下指出其他人有同样的直接问题挖掘与问题本身无关的所有位。今后,请尽量使问题中包含的代码尽可能短,从而产生相同的错误。
-
(另外,这个 shell 实际上不是 bash;
/bin/sh是 POSIX sh -- 即使它链接到 bash shell,它在以sh名称和不提供完整的bash语言)。