繁体   English   中英

Shell脚本中的For循环“执行”命令

[英]For loop “execute” commands in shell script

我想用文本文件的行填充数组,其中文件的每一行都是数组中的位置,以空格分隔(例如array [0] =“ int”array [1] =“ main (){}“array [2] =” int“ ...)。 但是这样做时,某些字符被视为shell命令。 下面的代码和我的脚本:

Shell脚本:

#!/bin/bash

array=($(cat $1))

for i in "${array[@]}"; do
  echo "$i"
done

要阅读的源代码:

int main(){

    int i;

    /** /** **/ (this part is treated as a shell command)
    i = 3 + 2;

    return 0;
}

输出:

 p0ng   ~ > ~/Compiladores  sh teste.sh codigoFonte.c 
int
main(){
int
i;
/bin
/boot
/dev
/etc
/home
/lib
/lib64
/lost+found
/mnt
/openwrt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var
/bin
/boot
/dev
/etc
/home
/lib
/lib64
/lost+found
/mnt
/openwrt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var
Projeto/
i
=
3
+
2;
return
0;
}

谢谢您的帮助!

-更新-

我必须对脚本进行两​​项更改(感谢glenn jackman):

#!/bin/bash

mapfile -t array < "$1" # <--- HERE

for i in "${array[*]}"; do
  echo "$i"     # ^--- and HERE (i don't know why)
done

现在可以了! :)

bash的mapfile命令是您在此处应使用的命令:

#!/bin/bash
mapfile -t array < "$1"
printf "%s\n" "${array[@]}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM