shell脚本中的问题

发布于 2024-08-07 08:19:01 字数 213 浏览 3 评论 0原文

尝试此选项,

#!/bin/ksh

echo $1
awk '{FS="=";print $2}' $1

我正在命令行上

test_sh INSTANCE=VIJAY

但 awk 失败。这里有什么问题吗? 基本上我需要在命令行上传递的值VIJAY

I am trying this option

#!/bin/ksh

echo $1
awk '{FS="=";print $2}' $1

and on the command line

test_sh INSTANCE=VIJAY

but awk is failing. Is there any problem here?
Basically I need the value VIJAY passed on the command line.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

棒棒糖 2024-08-14 08:19:02

ksh(和 Bash)可以为您进行拆分:

#!/bin/ksh
var="${1%=*}"
val="${1#*=}"
echo "Var is $var"
echo "Val is $val"

运行它:

$ ./scriptname INSTANCE=VIJAY
Var is INSTANCE
Val is VIJAY

ksh (and Bash) can do the splitting for you:

#!/bin/ksh
var="${1%=*}"
val="${1#*=}"
echo "Var is $var"
echo "Val is $val"

Running it:

$ ./scriptname INSTANCE=VIJAY
Var is INSTANCE
Val is VIJAY
拥醉 2024-08-14 08:19:02

对于awk,第二个参数是要处理的文件的名称。
所以你要求它处理名为 INSTANCE=VIJAY 的文件

相反,做

echo "$1" | awk '{FS="=";print $2}'

只是为了清楚起见,它的作用是将要处理的输入通过标准输入通过管道从 回声;而不是 awk 从文件中读取输入。

引用 Awk 手册

如果命令行上没有指定文件,gawk 会读取标准输入。

for awk, the second parameter is a name of the file to process.
So you asked it to process the file named INSTANCE=VIJAY

Instead, do

echo "$1" | awk '{FS="=";print $2}'

Just to be clear, what this does is pass the input to be processed to awk via standard input through a pipe from output of echo; instead of awk reading it input from a file.

To quote from Awk manual:

If there are no files named on the command line, gawk reads the standard input.

樱花细雨 2024-08-14 08:19:02

我认为更简单的是

#!/bin/sh

echo $1
echo $1 | cut -d= -f2

cut 也可以在等号上分割,然后显示第二个标记。另请注意,将 $1 传递给 awk 不正确,因为该参数不是文件。

I think a simpler one is

#!/bin/sh

echo $1
echo $1 | cut -d= -f2

as cut can split on the equal sign as well and then show the second token. Also note that the passing $1 to awk was not correct as that argument is not a file.

情何以堪。 2024-08-14 08:19:02

我认为你离开了管道 (|)

echo $1 | awk '{FS="=";print $2}' 

替代方案

echo $1 | cut -d'=' -f2

I think you left the pipe (|)

echo $1 | awk '{FS="=";print $2}' 

Alternative

echo $1 | cut -d'=' -f2
电影里的梦 2024-08-14 08:19:02
#!/bin/ksh
echo $1 | cut -f2 -d=
#!/bin/ksh
echo $1 | cut -f2 -d=
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文