[英]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.