用Bash中的“-”(减号)可变

| 这太简单了...
FOLDER=\'/home/user/.ssh\'
SSH=\"$FOLDER/local-rsync-key.pub\"
if [ -f \"$SSH\" ]; then
...
看来Bash认为\'-\'为减号信号,并且IF语句始终失败...如何正确编写此变量? 更新: 这是另一个真实的例子: 我正在尝试使用文件名前面的\“-\”重命名文件,例如:\“-0001.jpg \” 但是,我尝试运行的每一句:
for i in *; do mv \"$i\" \"${i//-/}\"; done
要么:
for i in *; do mv \"$i\" \"${i#*-}\"; done
我收到此错误:
mv: invalid option -- \'0\'
Try `mv --help\' for more information.
谢谢你的光!     
已邀请:
        您在
SSH
赋值之前不应有
$
,只有在使用变量时才需要。没有它,它可以正常工作,如以下脚本所示:
pax> touch abc-xyz

pax> ll a*
-rw-r--r-- 1 pax paxgrp 0 2011-06-24 05:15 abc-xyz

pax> FOLDER=.

pax> $SSH=\"$FOLDER/abc-xyz\"
bash: =./abc-xyz: No such file or directory

pax> SSH=\"$FOLDER/abc-xyz\"

pax> if [ -f \"$SSH\" ]
...> then
...>     echo yes
...> fi
yes

pax> _
    
        答案是在文件名称(表明它与文件有关)之前,在\“ mv \”或\“ ./ \”之后使用\“-\”(表示没有更多选项)。例如:
for i in *; do mv -- \"$i\" \"${i#*-}\"; done
要么:
for i in *; do mv -- \"$i\" \"./${i#*-}\"; done
    
        在bash语法中,设置变量时只需使用变量名:
VAR=value
引用变量时,请使用the4ѭ前缀:
echo $VAR
您的代码在试图设置SSH变量的地方有一个美元符号前缀。变量中的破折号应该没问题。     

要回复问题请先登录注册