Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 Unix:awk将值另存为变量_Bash_Variables_Awk_Save - Fatal编程技术网

Bash Unix:awk将值另存为变量

Bash Unix:awk将值另存为变量,bash,variables,awk,save,Bash,Variables,Awk,Save,我有一个带有几个下划线的文件名: nc_glals_3_4.mrc 在那里我可以用awk读出值3和4: $ echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print$3$4}' 34 但是,如果我想将34存储为变量并调用该变量,则它不起作用: $ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}') -bash: nc_glals_3_4.mrc

我有一个带有几个下划线的文件名:

nc_glals_3_4.mrc 
在那里我可以用awk读出值3和4:

$ echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print$3$4}' 
34
但是,如果我想将
3
4存储为变量并调用该变量,则它不起作用:

$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')
-bash: nc_glals_3_4.mrc: command not found

$ variable="$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')"
-bash: nc_glals_3_4.mrc: command not found

$ variable
-bash: variable: command not found

怎么了?

如果我理解你的问题:

variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

您的命令中需要回声。。。。现在“34”存储到变量中。

如果我理解您的问题:

variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

您的命令中需要回声。。。。现在“34”存储到变量中。

正如您在命令行上使用了
echo
一样,您还需要在子进程调用中使用
echo
,例如:

# wrong:

$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

# right:

$ variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

# or using here string:

$ variable=$(awk -F'[_.]' '{print $3$4}' <<< "nc_glals_3_4.mrc")

正如您在命令行上使用了
echo
,您也需要在子进程调用中使用
echo
,例如:

# wrong:

$ variable=$("nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

# right:

$ variable=$(echo "nc_glals_3_4.mrc" | awk -F'[_.]' '{print $3$4}')

# or using here string:

$ variable=$(awk -F'[_.]' '{print $3$4}' <<< "nc_glals_3_4.mrc")

如果要保留的数字始终位于同一位置:

test@darkstar:~$ Filename="nc_glals_3_4.mrc"
test@darkstar:~$ awk -F'[_.]' '{print$3$4}' <<< $Filename
34
test@darkstar:~$ Numbers=$(awk -F'[_.]' '{print$3$4}' <<< $Filename)
test@darkstar:~$ echo $Numbers
34
test@darkstar:~$
test@darkstar:~$Filename=“nc\u glals\u 3\u 4.mrc”

test@darkstar:~$awk-F'[557;]'{print$3$4}'如果要保留的数字始终位于同一位置:

test@darkstar:~$ Filename="nc_glals_3_4.mrc"
test@darkstar:~$ awk -F'[_.]' '{print$3$4}' <<< $Filename
34
test@darkstar:~$ Numbers=$(awk -F'[_.]' '{print$3$4}' <<< $Filename)
test@darkstar:~$ echo $Numbers
34
test@darkstar:~$
test@darkstar:~$Filename=“nc\u glals\u 3\u 4.mrc”

test@darkstar:~$awk-F'[\.]'{print$3$4}'
变量=$(echo“nc_glals_3_4.mrc”{print$3$4}')
您需要
echo
内部的
$(…)
就像外部一样。Bash正在尝试将字符串作为程序运行
变量=$(echo“nc_glals_3_4.mrc”| awk-F'[|]''{print$3$4}')
您需要
echo
内部
$(…)
就像外部一样。Bash正在尝试将字符串作为程序运行