CSH 中双引号反引号内变量扩展(文件名)的正确引用是什么?

问题描述 投票:0回答:1

假设您所在的系统具有有害文件名,例如。

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 '"'.

在双引号反引号中转义变量的正确方法是什么?

csh
1个回答
0
投票

我不明白其中的微妙之处,但正确的语法似乎是:

printf '%s\n' "`readlink "'$lnk:q'"`"
  tata  
© www.soinside.com 2019 - 2024. All rights reserved.