如何处理 shell 脚本的命令行参数中的特殊字符
How to handle special characters in command line arguments for a shell script
我有以下 shell 脚本,我只想打印出传入的第一个参数
代码:
#!/bin/bash
if [ "" == "" ]; then
exit 1
fi
echo
假设脚本的名称是 testarg.sh
,其调用方式如下 - testarg.sh abc
。太棒了!
如果我传递像“abc”或“xyz123”这样的简单参数,上面的 shell 脚本就可以工作。像 testarg.sh xyz123
这样调用它会打印出“xyz123”。一切顺利!
问题:
但是如果我传递一个带有特殊字符的复杂字符串,它会准确地打印出内容。假设我在下面这样称呼它:
./testarg.sh $nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
问题:
在上面的调用中,我想将 $nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
作为参数传递,并按原样打印出来,包括斜杠和点。我需要使用特殊技巧吗?
我不希望我的脚本的用户费心为斜线插入特殊的转义字符。有没有一种方法可以在我的脚本中很好地处理这个问题并获得
的值,因为它是准确打印出来的?
您需要在参数周围使用单引号调用脚本。无法通过更改脚本代码来实现此功能。
./testarg.sh '$nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.'
我有以下 shell 脚本,我只想打印出传入的第一个参数
代码:
#!/bin/bash
if [ "" == "" ]; then
exit 1
fi
echo
假设脚本的名称是 testarg.sh
,其调用方式如下 - testarg.sh abc
。太棒了!
如果我传递像“abc”或“xyz123”这样的简单参数,上面的 shell 脚本就可以工作。像 testarg.sh xyz123
这样调用它会打印出“xyz123”。一切顺利!
问题:
但是如果我传递一个带有特殊字符的复杂字符串,它会准确地打印出内容。假设我在下面这样称呼它:
./testarg.sh $nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
问题:
在上面的调用中,我想将 $nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.
作为参数传递,并按原样打印出来,包括斜杠和点。我需要使用特殊技巧吗?
我不希望我的脚本的用户费心为斜线插入特殊的转义字符。有没有一种方法可以在我的脚本中很好地处理这个问题并获得 的值,因为它是准确打印出来的?
您需要在参数周围使用单引号调用脚本。无法通过更改脚本代码来实现此功能。
./testarg.sh '$nB3/jwAqgRcS9LN7c5InVbk5SLFiwuz9Xm6EHHRuZHMI0ggMhmxJ7Pr7NuBZ0TXtProuZ6LpQ6ZrFySly12cbGmWHsFpukEKAzdW.'