Bash shell脚本中的问题
我正在尝试这个选择Bash shell脚本中的问题,bash,unix,shell,awk,Bash,Unix,Shell,Awk,我正在尝试这个选择 #!/bin/ksh echo $1 awk '{FS="=";print $2}' $1 和在命令行上 test_sh INSTANCE=VIJAY 但awk正在失败。这里有什么问题吗? 基本上,我需要在命令行上传递值VIJAY。我想你离开了管道(|) 另类 echo $1 | cut -d'=' -f2 我想你把烟斗忘了 另类 echo $1 | cut -d'=' -f2 对于awk,第二个参数是要处理的文件的名称。 因此,您要求它处理名为INSTANCE=V
#!/bin/ksh
echo $1
awk '{FS="=";print $2}' $1
和在命令行上
test_sh INSTANCE=VIJAY
但awk正在失败。这里有什么问题吗?
基本上,我需要在命令行上传递值VIJAY
。我想你离开了管道(|)
另类
echo $1 | cut -d'=' -f2
我想你把烟斗忘了
另类
echo $1 | cut -d'=' -f2
对于
awk
,第二个参数是要处理的文件的名称。
因此,您要求它处理名为INSTANCE=VIJAY
相反,你应该这样做
echo "$1" | awk '{FS="=";print $2}'
需要明确的是,它的作用是通过标准输入通过管道将要处理的输入从回波的输出传递到awk;而不是awk从文件中读取输入
引自:
如果命令行上没有命名的文件,gawk将读取标准输入
对于
awk
,第二个参数是要处理的文件的名称。
因此,您要求它处理名为INSTANCE=VIJAY
相反,你应该这样做
echo "$1" | awk '{FS="=";print $2}'
需要明确的是,它的作用是通过标准输入通过管道将要处理的输入从回波的输出传递到awk;而不是awk从文件中读取输入
引自:
如果命令行上没有命名的文件,gawk将读取标准输入
我认为更简单的是
#!/bin/sh
echo $1
echo $1 | cut -d= -f2
as
cut
也可以在等号上拆分,然后显示第二个标记。还要注意,将$1
传递到awk
是不正确的,因为该参数不是文件。我认为更简单的是
#!/bin/sh
echo $1
echo $1 | cut -d= -f2
ascut
也可以在等号上拆分,然后显示第二个标记。还请注意,将$1
传递到awk
是不正确的,因为该参数不是文件。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(和Bash)可以为您进行拆分:
#!/bin/ksh
var="${1%=*}"
val="${1#*=}"
echo "Var is $var"
echo "Val is $val"
运行它:
$ ./scriptname INSTANCE=VIJAY
Var is INSTANCE
Val is VIJAY
将FS变量放入BEGIN块。将FS变量放入BEGIN块。