[英]Bash script loop not incrementing
我有一个脚本,将 2 -> file#.txt -> newline 输入到我的程序中。 但是,该脚本仅将 file4.txt 输入到我的程序中,即使循环运行了 10 次。 我不确定为什么这会专门针对 i=4 发生。
gnome-terminal --working-directory=/path/to/dir/ -- bash -c "{ for i in {1..10};
do echo "2"; echo "file"$i".txt"; echo $'\n'; done; } | ./program; exec bash"
$
字符正在由您的原始 shell 处理,而不是在gnome-terminal
中执行的 shell 处理。 此外,嵌入的双引号分隔-c
参数,而不是显式传递给bash
。
您需要转义$
和"
字符以保留它们。
gnome-terminal --working-directory=/path/to/dir/ -- bash -c "{ for i in {1..10};
do echo \"2\"; echo \"file\"\$i".txt\"; echo \$'\n'; done; } | ./program; exec bash"
您也可以将命令放在单引号中,但是您将无法在其中嵌入$'\n'
,因为您无法在单引号中转义引号。 但是您可以使用printf
代替echo
,因为它会自行翻译转义序列。
gnome-terminal --working-directory=/path/to/dir/ -- bash -c '{ for i in {1..10};
do echo "2"; printf "file%d.txt\n\n" $i; done; } | ./program; exec bash'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.