如何解决用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变量的地方有一个美元符号前缀。变量中的破折号应该没问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。