在bash脚本中使用文字$ s引用参数

时间:2016-07-13 14:50:02

标签: linux bash shell

我尝试在脚本中使用变量来存储包含$的字符串,并将该字符串作为命令的一部分进行未修改,其用法指定其参数应为单个引号。

这非常有效:

./mycommand -a 1 --arg='$a$a'

在剧本中,我试图按如下方式编写:

args='$a$a'
./mycommand -a 1 --arg="'$args'"

在这种情况下,命令不接受它传递的有效语法。可能有什么不对?

补充编辑:这个脚本是运行hashcat,密码破解程序。我认为它需要--left-rule='$a$a'--right-rule='$b$b'的单引号,特别是如果规则中有任何空格。

1 个答案:

答案 0 :(得分:1)

双引号内的单引号不会阻止扩展;他们是字面字符。比较:

$ a=5
$ echo "'$a$a'"
'55'

由于您只想将文字字符串$a$a作为参数传递,因此引用参数赋值就足够了;不需要额外的单引号:

args='$a$a'   # The literal string $a$a
./command -a $iter --arg="$args"  # $args expands to $a$a; no further expansion is attempted.