假设您所在的系统具有有害文件名,例如。
set lnk = \''to\
to " `'
ln -s ' tata ' $lnk:q
现在我使用
lnk
作为反引号内命令的参数:
echo '=expected output='
readlink $lnk:q
echo =1=
printf '%s\n' `readlink $lnk:q`
echo =2=
printf '%s\n' "`readlink $lnk:q`"
echo =3=
printf '%s\n' "`readlink "$lnk"`"
echo =4=
printf '%s\n' "`readlink '$lnk:q'`"
=expected output=
tata
=1=
tata
=2=
Unmatched '''.
=3=
Unmatched '`'.
=4=
Unmatched '"'.
在双引号反引号中转义变量的正确方法是什么?
我不明白其中的微妙之处,但正确的语法似乎是:
printf '%s\n' "`readlink "'$lnk:q'"`"
tata