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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/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
使用shell脚本在数组中存储值_Shell_Unix_Quoting - Fatal编程技术网

使用shell脚本在数组中存储值

使用shell脚本在数组中存储值,shell,unix,quoting,Shell,Unix,Quoting,这很好,因为我直接输入数据 declare -a arr arr=( $(awk '/123456789/{print NR}' filename) ) echo ${arr[0]} echo ${arr[*]} 当我按照下面的方法做时,它不起作用。您能告诉我如何在下面的命令中使用参数“name”: echo Enter your search string: read name declare -a arr arr=( $(awk '/"$name"/{print NR}' filen

这很好,因为我直接输入数据

declare -a arr
arr=( $(awk '/123456789/{print NR}' filename) )
echo ${arr[0]}
echo ${arr[*]}
当我按照下面的方法做时,它不起作用。您能告诉我如何在下面的命令中使用参数“name”:

echo  Enter your search string:  
read name
declare -a arr
arr=( $(awk '/"$name"/{print NR}' filename )
echo ${arr[0]}
echo ${arr[*]}

根据你的评论,我发布了这个答案。这是适用于您的脚本:

read -e -p "Enter your search string: " name
#echo "name: [$name]"
declare -a arr
arr=( $(awk /"$name"'/{print NR}' x ) )
echo ${arr[0]}
echo ${arr[*]}

echo输入要搜索的字符串:read name declare-a arr arr=($(awk/“$name”/“{print NR}”文件名)echo${arr[0]}echo${arr[*]}输出:输入要搜索的字符串:123456789./newarray.sh:第4行:查找匹配`时出现意外的EOF)@Jens:您的命令是正确的,但单引号放错了位置。arr=($(awk/“$name”'/{print NR}'文件名))谢谢你,Anubhava:)不,没有错放。/周围没有空格,因此shell将
/“$name”/“{print NR}”
解析为一个标记。@Anubhava:谢谢。您在脚本中的评论和修改非常有用,但上面的脚本有什么问题?@JackieJames:很抱歉反应太晚,我想您已经发现您的脚本在awk命令中缺少一个右括号。)。@Anubhava:不,不是妄想症,是单引号放错地方了。arr=($(awk/“$name”'/{print NR}'x))正确的arr=($(awk/“$name”/{print NR}”文件名)单引号错位@Anubhava:你能不能研究一下这个“是否可以用shell脚本编写下面的代码?”这是另一篇不同的文章。@Anubhava:你能按标题检查这篇文章吗“是否可以用shell脚本编写以下代码?”
read -e -p "Enter your search string: " name
#echo "name: [$name]"
declare -a arr
arr=( $(awk /"$name"'/{print NR}' x ) )
echo ${arr[0]}
echo ${arr[*]}