Linux 如何处理shell脚本的命令行参数中的特殊字符

Linux 如何处理shell脚本的命令行参数中的特殊字符,linux,shell,sh,command-line-arguments,Linux,Shell,Sh,Command Line Arguments,我有下面的shell脚本,我只想在传入第一个参数时打印它 代码: #!/bin/bash if [ "$1" == "" ]; then exit 1 fi echo $1 假设脚本的名称是testarg.sh,其调用方式如下-testarg.sh abc。太好了 如果我传递像“abc”或“xyz123”这样的简单参数,上面的shell脚本就会工作。然后像testarg.sh xyz123那样调用它,打印出“xyz123”。一切都好 问题:

我有下面的shell脚本,我只想在传入第一个参数时打印它

代码:

#!/bin/bash

if [ "$1" == "" ]; then
    exit 1
fi

echo $1
假设脚本的名称是
testarg.sh
,其调用方式如下-
testarg.sh abc
。太好了

如果我传递像“abc”或“xyz123”这样的简单参数,上面的shell脚本就会工作。然后像
testarg.sh xyz123那样调用它,打印出“xyz123”。一切都好

问题:
但是如果我传递一个带有特殊字符的复杂字符串,if确实可以准确地打印内容。假设我这样称呼它:

./testarg.sh $6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
问题:
在上面的调用中,我想将
$6$nB3/jwAqgRcS9LN7$8c5invbk5slfiwuz9xm6ehhruzhmi0ggmxmxj7pr7nubz0txtprouz6lpq6zrfysly2cbgmwhsfpukekazdw.
作为参数传递,并按包含斜线和圆点的方式打印出来。我需要使用特殊的技巧吗


我不想让脚本的用户费心为斜杠插入特殊的转义字符。是否有一种方法可以在脚本中很好地处理这个问题,并获得
$1
的值以便准确地打印出来?

您需要在参数周围使用单引号调用脚本。无法通过更改脚本的代码来实现这一点

./testarg.sh '$6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.'

您需要在参数周围使用单引号调用脚本。无法通过更改脚本的代码来实现这一点

./testarg.sh '$6$nB3/jwAqgRcS9LN7$8c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.'