【问题标题】:Shell param doesn't pass with commandShell 参数不通过命令传递
【发布时间】:2017-09-03 14:13:46
【问题描述】:

我使用下面的代码来执行shell命令,问题是当我把它作为我应该从用户那里获取的参数时它不起作用但是如果我把它硬编码它就可以了。

工作

VAL=`./test a | grep '^.(\bpass\b)?.$' | cut -d ' ' -g1`

不工作

VAL=`./test a | grep ${param} | cut -d ' ' -g1`

在我对参数执行cat 的无效版本中,我看到打印的值正常,当我通过${param} 时会错过什么?

【问题讨论】:

  • 变量param 真的包含正确的值吗?运行-x下的代码验证一下,或者之前做一个echo param="$param"

标签: linux shell command-line command


【解决方案1】:

shell 中的参数是 $1 $2 $3 等等... 现在你输入的是空数据。

您可能需要在 $1 参数周围加上 ""。并确保 $1 的值确实是正确的值。

【讨论】:

  • 看你想做什么
  • 如果我这样做echo ${param}" 我看到了数据那么我应该如何更改它?
  • 我想要的是获得值VAL,因为我在使用第一个命令时得到它(来自帖子......)
  • '^.(\bpass\b)?.$' 的部分是参数?
  • 当我把它改成VAL=./test a | grep $1 | cut -d ' ' -g1`` 它不起作用
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2021-12-13
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多