我正在制作一个bash脚本,该脚本将打印并将复杂的参数传递给另一个外部程序。
./script -m root@hostname,root@hostname -o -q -- 'uptime ; uname -a'
我该如何打印原始参数:
-m root@hostname,root@hostname -o -q -- 'uptime ; uname -a'
使用$@
并$*
删除uptime ; uname -a
可能引起不良结果的单引号。我的脚本不需要解析每个参数。我只需要打印/记录参数字符串,然后将其确切地传递给另一个程序。
我知道我可以使用类似的东西来避免引号, "'uptime ; uname -a'"
但是我不能保证用户会这样做。
在将参数传递到脚本之前,引号已被删除,因此保留它们为时已晚。您可以做的是在将参数传递给内部命令时保留其效果,并重建等效的带引号/转义版本的参数以进行打印。
为了将参数传递给内部命令"$@"
-使用双引号,$ @保留原始的换行符,这意味着内部命令接收的脚本列表与脚本完全相同。
对于打印,可以在bash的printf命令中使用%q格式来重建报价。请注意,这并不总是重建原始的引用,而是会构造一个 等效的带
引号/转义的字符串。例如,如果您传递了参数,则该参数'uptime ; uname -a'
可能会打印uptime\ \;\ uname\ -a
或"uptime ; uname -a"
其他等效参数(有关类似示例,请参见@William Pursell的答案)。
这是使用这些的示例:
printf "Running command:"
printf " %q" innercmd "$@" # note the space before %q -- this inserts spaces between arguments
printf "\n"
innercmd "$@"
考虑以下bash脚本: 第一个参数中的尾随空格发生了什么变化?如何保存它?
问题内容: 在我的React应用程序中,我有一些用户进入应用程序的参数,这些参数提供有关它们来自何处的一些信息。有没有一种方法可以使用react- router在整个应用程序中保留这些查询参数。意思是每次更改路线时,Id都会像那些查询参数一样保留在url中。我看到的唯一示例是在路由之间传递查询参数,但没有为每个路由都保留它们。 问题答案: React-Router v3的解决方案: 我在Types
下表为PC标签保留参数表,几乎所有的PC标签都支持这些保留参数设置 变量名 默认值 说明 action null 本参数的值表示为操作事件,模型类PC标签必须使用包含本参数,以说明要进行的操作。 cache 0 缓存存储时间(单位秒) num 20 获取记录的条数,最后会被模板引擎处理成limit传送到处理函数中。 page null 当前分页。一般填写为$_GET[page] urlrule n
问题内容: 分页时有什么方法可以保留我的GET参数。 我的问题是我有几个不同的网址,即 我应该如何在分页类中创建指向页面上具有不同页码的页面的链接,但仍然保留网址的其他部分? 问题答案: 简而言之,您只需解析URL,然后在最后添加参数,或者如果参数已经存在,则将其替换。 此示例代码需要用于和的PHP HTTP模块 。后者可以替换为第一个,如果没有安装模块,则可以使用PHP用户空间实现。 另一种选择
问题内容: htaccess url重写后,保持URL的参数正常工作时出现问题。 我的htaccess重写如下: 意思是: 显示为 出于某种原因,当我在URL的末尾添加a 时,即使显示的URL中存在这些参数,也无法使用php检索这些参数。 为什么不传递变量? 问题答案: 您需要附加[QSA](查询字符串附加)标签。尝试 参见http://httpd.apache.org/docs/2.2/mod/
问题内容: 我刚刚开始使用原型JavaScript,并且在弄清楚范围更改时如何从原型函数内部保留对主对象的引用时遇到了麻烦。让我说明一下我的意思(我在这里使用jQuery): 我知道我可以通过在以下内容的开头保留对主对象的引用: 然后用于访问主要对象的属性。但是,当我拥有一大堆原型函数时会发生什么?我是否必须在每个文件的开头都保存对它的引用?似乎应该有一种更清洁的方法。那么这样的情况呢: 在那种情