Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash shell脚本中的问题_Bash_Unix_Shell_Awk - Fatal编程技术网

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
as
cut
也可以在等号上拆分,然后显示第二个标记。还请注意,将
$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块。